《嵌入式操作系統(tǒng)》實(shí)驗(yàn)報(bào)告_第1頁
《嵌入式操作系統(tǒng)》實(shí)驗(yàn)報(bào)告_第2頁
《嵌入式操作系統(tǒng)》實(shí)驗(yàn)報(bào)告_第3頁
《嵌入式操作系統(tǒng)》實(shí)驗(yàn)報(bào)告_第4頁
《嵌入式操作系統(tǒng)》實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

《嵌入式操作系統(tǒng)》實(shí)驗(yàn)報(bào)告《嵌入式操作系統(tǒng)》試驗(yàn)報(bào)告

班級(jí)計(jì)算機(jī)

學(xué)號(hào)

姓名

指導(dǎo)老師莊旭菲

工業(yè)高校信息工程學(xué)院計(jì)算機(jī)系

2024年6月

試驗(yàn)一Linux核移植與編譯試驗(yàn)

1.試驗(yàn)?zāi)康?/p>

?了解Linux核相關(guān)學(xué)問與核結(jié)構(gòu)

?了解Linux核在ARM設(shè)備上移植的基本步驟和方法

?把握Linux核裁剪與定制的基本方法

2.試驗(yàn)容

?分析Linux核的基本結(jié)構(gòu),了解Linux核在ARM設(shè)備上移植的一些基本步驟及常識(shí)。

?學(xué)習(xí)Linux核裁剪定制的基本配置方法,利用UP-Magic210型設(shè)備配套Linux核進(jìn)行

自定義功能(如helloworld顯示)的添加,并重新編譯核源碼,生成核壓縮文件zImage,下載到UP-Magic210型設(shè)備中測試。

3.試驗(yàn)步驟

試驗(yàn)名目:/UP-Magic210/SRC/kernel/linux-/

編譯核:在宿主機(jī)端為UP-Magic210設(shè)備的Linux核編寫簡潔的測試驅(qū)動(dòng)(核)程序helloworld.c并修改核名目中相關(guān)文件,添加對測試驅(qū)動(dòng)程序的支持。

(1)、使用vim編輯器手動(dòng)編寫試驗(yàn)代碼helloworld.c

helloworld.c如如下:

#include

#include

MODULE_LICENSE("DualBSD/GPL");

//驅(qū)動(dòng)程序入口函數(shù)

staticinthello_init(void)

{

printk(KERN_ALERT"##############Hello,world############\n");

return0;

}

//驅(qū)動(dòng)程序出口函數(shù)

staticvoidhello_exit(void)

{

printk(KERN_ALERT"###############Goodbye,world#########\n");

}

module_init(hello_init);

module_exit(hello_exit);

有關(guān)驅(qū)動(dòng)程序的編寫規(guī),請參考課程教材,本試驗(yàn)只在編寫簡潔的驅(qū)動(dòng)(核)程序并加入到Linux核名目樹中,使用戶熟識(shí)編譯核的過程。該驅(qū)動(dòng)程序是向終端輸出相關(guān)程序信息。編寫好helloworld.c后將其拷貝到核源碼樹的drivers/char/名目下。

#cphelloworld.c/UP-Magic210/SRC/kernel/linux-/drivers/char/(2)、進(jìn)入試驗(yàn)核源碼名目修改driver/char/名目下的Kconfig文件,根據(jù)Kconfig語法添加helloworld程序的菜單支持

#cdUP-Magic210/SRC/kernel/linux-/

#vidrivers/char/Kconfig

例如:在Kconfig文件中的source“driver/char/hw_random/Kconfig”下面添加如下:source“driver/char/hw_random/Kconfig”

configHELLO_MODULE

bool"HelloWorldTest"

dependsonCPU_S5PV210

help

ThisisademototestkernelexperimentOnUP-Magic210.

(3)、進(jìn)入試驗(yàn)核源碼名目修改driver/char/名目下的Makefile文件,根據(jù)核中Makefile語法添加helloworld程序的編譯支持

#vidrivers/char/Makefile

在Makefile中(大約在91行)添加如下一行

obj-$(CONFIG_TOSHIBA)+=toshiba.o

obj-$(CONFIG_I8K)+=i8k.o

obj-$(CONFIG_DS1620)+=ds1620.o

obj-$(CONFIG_HW_RANDOM)+=hw_random/

obj-$(CONFIG_HELLO_MODULE)+=helloworld.o

obj-$(CONFIG_PPDEV)+=ppdev.o

(4)、運(yùn)行makemenuconfig配置核對helloworld程序的支持:

#makedistclean

#makemenuconfig

先加載核配置單,如圖:

然后進(jìn)入到DeviceDrivers--->菜單中如圖:

進(jìn)入到Characterdevices--->如圖:

進(jìn)入該菜單會(huì)發(fā)覺HelloWorldTest選項(xiàng),按下空格將其靜態(tài)編譯進(jìn)核

退出保存核配置

(5)、重新編譯核

在核源碼的頂層名目下編譯核

#make

scripts/kconfig/conf-sarch/arm/Kconfig

CHKinclude/linux/version.h

CHKinclude/generated/utsrelease.h

make:“include/generated/mach-types.h”是最新的。

CALLscripts/checksyscalls.sh

CHKinclude/generated/pile.h

CCdrivers/char/helloworld.o

LDdrivers/char/built-in.o

LDdrivers/built-in.o

LDvmlinux.o

MODPOSTvmlinux.o

初次編譯核源碼,由核代碼浩大,所需較長時(shí)間(大約幾分鐘至10幾分鐘不等)。編譯勝利后會(huì)在核源碼名目的arch/arm/boot/名目下生成核壓縮文件zImage。

#lsarch/arm/boot/zImage

arch/arm/boot/zImage

#

(6)、將新生成的核鏡像文件zImage燒寫到UP-Magic210型設(shè)備中,這里不在贅述(燒寫步驟可以參考文檔“UP-Magic210出廠程序燒寫手冊(LINUX)V1.0.pdf”第23頁)。新核燒寫勝利后啟動(dòng)UP-Magic210型系統(tǒng),可以在串口終端中查看到Linux核在啟動(dòng)過程中打印出來的如下信息:

S3C_LCDclockgotenabled::133.000Mhz

Window-FB1:map_video_memory:clearff600000:00096000

FB1:map_video_memory:dma=57100000cpu=ff600000size=00096000

Console:switchingtocolourframebufferdevice80x30

fb-1069494052:framebufferdevice

###################Hello,world###################

ppdev:user-spaceparallelportdriver

s3c-uart.0:ttySAC0atMMIO0x7f005000(irq=37)isaS3C

s3c-uart.1:ttySAC1atMMIO0x7f005400(irq=38)isaS3C

s3c-uart.2:ttySAC2atMMIO0x7f005800(irq=39)isaS3C

RAMDISKdriverinitialized:16RAMdisksof4096Ksize1024blocksize

loop:loaded(max8devices)

nbd:registereddeviceatmajor43

dm9000EthernetDriver

eth0:dm9000atc7866000,c7866002IRQ78MAC:00:22:12:34:56:90

S3CIrDAdriver,(c)2024SamsungElectronics

Linuxvideocaptureinterface:v2.00

可以看到在終端上打印出###################Hello,world###################信息。同樣進(jìn)入ARM系統(tǒng)后也可以通過dmesg命令查看核啟動(dòng)信息。

#dmesg

S3C_LCDclockgotenabled::133.000Mhz

Window-FB1:map_video_memory:clearff600000:00096000

FB1:map_video_memory:dma=57100000cpu=ff600000size=00096000

Console:switchingtocolourframebufferdevice80x30

fb-1069494052:framebufferdevice

###################Hello,world###################ppdev:user-spaceparallelportdriver

s3c-uart.0:ttySAC0atMMIO0x7f005000(irq=37)isaS3C

s3c-uart.1:ttySAC1atMMIO0x7f005400(irq=38)isaS3C

s3c-uart.2:ttySAC2atMMIO0x7f005800(irq=39)isaS3CRAMDISKdriverinitialized:16RAMdisksof4096Ksize1024blocksize4.試驗(yàn)結(jié)果

思索:如何能在Linux系統(tǒng)啟動(dòng)時(shí),輸出顯示自定義的文本信息,請修改Linux核啟動(dòng)代碼,完成此功能。

5.試驗(yàn)中遇到的問題及解決方法

在試驗(yàn)中遇到一些問題,例如在復(fù)制的時(shí)候我記得原來用cp–a/tmp/linux-2.4.18-br.tar.gz就可以了,可這次不行必需要用cp–a/tmp/linux-2.4.18-br.tar.gz./到自己的名目下。不過最終都順當(dāng)解決了問題,在編譯復(fù)習(xí)了makemenuconfig的編譯配置。

試驗(yàn)二根文件系統(tǒng)試驗(yàn)

1.試驗(yàn)?zāi)康?/p>

?了解UP-Magic210魔法師試驗(yàn)套件Linux系統(tǒng)下根文件系統(tǒng)結(jié)構(gòu)

?把握根文件系統(tǒng)的搭建過程

?把握busybox、mkcramfs等工具的使用方法

2.試驗(yàn)容

?使用busybox生成文件系統(tǒng)中的命令部分,使用mkcramfs工具制作CRAMFS格式的

根文件系統(tǒng)。

?分析根文件系統(tǒng)etc名目下重要配置文件的格式及語法,熟識(shí)根文件系統(tǒng)的啟動(dòng)過程3.試驗(yàn)步驟

試驗(yàn)名目:/UP-Magic210/SRC/kernel/linux-/

/UP-Magic210/SRC/rootfs/

一、在核中添加文件系統(tǒng)類型支持

(1)、進(jìn)入宿主機(jī)中UP-Magic210型光盤核名目:

#cd/UP-Magic210/SRC/kernel/linux-/(2)、運(yùn)行makemenuconfig命令配置核文件系統(tǒng)相關(guān)支持添加對CRAMFS根文件以及YAFFS2文件系統(tǒng)系統(tǒng)支持

進(jìn)入Filesystems--->菜單

進(jìn)入Miscellaneousfilesystems--->菜單

選擇CompressedROMfilesystemsupport(cramfs)支持,如圖:

選擇YAFFS2filesystemsupport支持,配置如下圖

退出保存核配置

運(yùn)行make編譯核,重新燒寫核。

二、根文件系統(tǒng)的實(shí)現(xiàn)

(1)、制作BUSYBOX工具集

進(jìn)入本次試驗(yàn)名目

#cd/UP-Magic210/SRC/rootfs/

#ls

bash-4.0.tar.bz2busybox-1.19.3.tar.bz2rootfs

解壓busybox-1.19.3.tar.bz2壓縮包

#tarxjvfbusybox-1.19.3.tar.bz2

產(chǎn)生busybox-1.19.3名目

#ls

bash-4.0.tar.bz2busybox-1.19.3busybox-1.19.3.tar.bz2rootfs

進(jìn)入busybox-1.19.3名目進(jìn)行busybox的修改及配置

修改此名目的Makefile文件,更改ARCH?和CROSS_PILE?=宏定義,如下:CROSS_PILE?=arm-none-linux-gnueabi-

ARCH?=arm

退出保存。

運(yùn)行makemenuconfig對工具集進(jìn)行定制

#makemenuconfig

進(jìn)入BusyboxSettings--->選項(xiàng)

進(jìn)入BusyboxLibraryTuning--->選項(xiàng)

選中Fancyshellprompts支持

進(jìn)入MiscellaneousUtilities--->選項(xiàng)

去除inotifyd選項(xiàng)

接下來的配置可以依據(jù)詳細(xì)狀況來設(shè)置或裁剪相關(guān)工具。退出保存設(shè)置。

編譯busybox

#make

安裝busybox

#makeinstall

勝利后會(huì)在當(dāng)前名目下生成_install名目,編譯的工具也都集成在該安裝名目下。

#cd_install/

#ls

binlinuxrcsbinusr

#

可以看到_install名目下生成了根文件系統(tǒng)常用的命令及工具,接下來的工作,用戶可以依據(jù)需要將_install名目下生成的命令拷貝到根文件系統(tǒng)相應(yīng)名目下。

例如:將從busybox生成的which命令拷貝到根文件系統(tǒng)名目的usr/bin名目下,這樣,我們的根文件系統(tǒng)就支持which命令了。

(2)、制作CRAMFS根文件系統(tǒng)鏡像

試驗(yàn)中已經(jīng)供應(yīng)了mkcramfs制作工具以及mkrootfs.sh腳本文件,用戶只需執(zhí)行mkrootfs.sh腳本文件來使用mkcramfs制作根文件系統(tǒng)鏡像即可。

當(dāng)然也可以手動(dòng)的執(zhí)行命令:./mkcramfsrootfs_up210rootfs_up210.cramfs

#./mkrootfs.sh

此時(shí)在當(dāng)前名目下生成根文件系統(tǒng)鏡像文件rootfs_up210.cramfs

#ls

mkcramfsmkrootfs.shrootfs_up210rootfs_up210.cramfs

三、燒寫根文件系統(tǒng)

將新生成的根文件系統(tǒng)鏡像文件rootfs_up210.cramfs燒寫到UP-Magic210型設(shè)備中進(jìn)行測試,這里不在贅述(燒寫步驟可以參考文檔“UP-Magic210出廠程序燒寫手冊

(LINUX)V1.0.pdf”第24頁)。假如用戶新添加了相關(guān)命令或工具(例如which命令)啟動(dòng)系統(tǒng)后可以驗(yàn)證用戶添加入的新命令或工具。

4.試驗(yàn)結(jié)果

5.試驗(yàn)中遇到的問題及解決方法

make編譯有錯(cuò)誤,進(jìn)行源代碼的修改。之后再makemenuconfig中將這個(gè)宏對應(yīng)的東西配置成沒有就好了,假如沒有這個(gè)宏,那么就直接用出錯(cuò)的那個(gè)文件的名字找就行了,找到后給它去掉,將來make的時(shí)候就不會(huì)編譯這個(gè)文件了,在次進(jìn)行make編譯后,編譯出來了busybox這個(gè)東西,就在證明編譯通過了。

試驗(yàn)三模塊方式驅(qū)動(dòng)試驗(yàn)

1.試驗(yàn)?zāi)康?/p>

學(xué)習(xí)在LINUX下進(jìn)行驅(qū)動(dòng)設(shè)計(jì)的原理

?把握使用模塊方式進(jìn)行驅(qū)動(dòng)開發(fā)調(diào)試的過程

2.試驗(yàn)容

?在PC機(jī)上編寫簡潔的虛擬硬件驅(qū)動(dòng)程序并進(jìn)行調(diào)試,試驗(yàn)驅(qū)動(dòng)的各個(gè)接口函數(shù)的實(shí)

現(xiàn),分析并理解驅(qū)動(dòng)與應(yīng)用程序的交互過程。

?在ARM設(shè)備上創(chuàng)建設(shè)備驅(qū)動(dòng)節(jié)點(diǎn),編寫用戶空間應(yīng)用程序,對驅(qū)動(dòng)程序進(jìn)行測試。

3.試驗(yàn)步驟

(1)、編譯驅(qū)動(dòng)程序/UP-Magic210/SRC/exp/driver/01_demo/demo.c,手工加載驅(qū)動(dòng)程序,通過設(shè)備號(hào)建立驅(qū)動(dòng)設(shè)備節(jié)點(diǎn),執(zhí)行應(yīng)用程序測試該驅(qū)動(dòng)及設(shè)備,分析驅(qū)動(dòng)程序demo.c。

進(jìn)入試驗(yàn)名目編譯源程序

#cd/UP-Magic210/SRC/exp/driver/01_demo/

清除中間代碼,重新編譯

#makeclean

#make

當(dāng)前名目下生成驅(qū)動(dòng)程序demo.ko和應(yīng)用測試程序test_demo。

啟動(dòng)UP-Magic210試驗(yàn)系統(tǒng),連好網(wǎng)線、串口線。通過串口終端掛載宿主機(jī)試驗(yàn)名目(留意:虛擬機(jī)IP地址需要設(shè)置為:57)。

#mount-tnfs-onolock57:/UP-Magic210/mnt/nfs

進(jìn)入串口終端的NFS共享試驗(yàn)名目

#cd/mnt/nfs/SRC/exp/driver/01_demo/

手動(dòng)加載驅(qū)動(dòng)程序demo.ko

#insmoddemo.ko

通過設(shè)備號(hào)建立驅(qū)動(dòng)設(shè)備節(jié)點(diǎn)

#mknod/dev/democ2510

執(zhí)行應(yīng)用程序測試該驅(qū)動(dòng)及設(shè)備,分析應(yīng)用程序測試結(jié)果。

#./test_demo

(2)、請參考驅(qū)動(dòng)程序demo.c,編寫一個(gè)虛擬字符設(shè)備驅(qū)動(dòng)程序并進(jìn)行調(diào)試,該虛擬字符設(shè)備驅(qū)動(dòng)程序完成如下功能:

◆在核模塊初始化函數(shù)中,實(shí)現(xiàn)動(dòng)態(tài)申請?jiān)O(shè)備號(hào)并注冊該設(shè)備,動(dòng)態(tài)建立設(shè)備文件節(jié)

點(diǎn);

◆在核模塊的退出函數(shù)中,實(shí)現(xiàn)設(shè)備注銷,刪除該設(shè)備文件節(jié)點(diǎn);

◆實(shí)現(xiàn)file_operations設(shè)備驅(qū)動(dòng)文件結(jié)構(gòu)體中的open、read、write、ioctl和release

函數(shù)功能,其中:

?open函數(shù):設(shè)置一個(gè)計(jì)數(shù)器count,每調(diào)用一次open函數(shù),計(jì)數(shù)器count加1。

?read函數(shù):讀取用戶寫入的字符串?dāng)?shù)據(jù)的排列結(jié)果。

?write函數(shù):實(shí)現(xiàn)將用戶寫入的字符串?dāng)?shù)據(jù),根據(jù)每個(gè)字符的ASCII值逆序或升序排序(依據(jù)開關(guān)值asc排序:asc=0,逆序排序;asc=1,升序排序;)。

?ioctl函數(shù):設(shè)置排序方式開關(guān)值asc。

?release函數(shù):每調(diào)用一次release函數(shù),計(jì)數(shù)器count減1。

4.試驗(yàn)結(jié)果

5.試驗(yàn)中遇到的問題及解決方法。

沒有修改makefile文件直接進(jìn)行編譯導(dǎo)致出錯(cuò)。試驗(yàn)前沒有仔細(xì)閱讀試驗(yàn)原理,看懂試驗(yàn)代碼,所以在使用make命令以后無法實(shí)現(xiàn)。最終在同學(xué)的關(guān)心下找到了緣由。忽視了自己使用的是gcc編譯而不是交叉編譯,因而沒有設(shè)置節(jié)點(diǎn)。嘗試了許多次以后才發(fā)覺了問題,期間以為是test_demo文件的問題,但是導(dǎo)入導(dǎo)出許多次都沒有解決,問了同學(xué)才找到了問題。

試驗(yàn)四LED驅(qū)動(dòng)及掌握試驗(yàn)

1.試驗(yàn)?zāi)康?/p>

?了解ARM設(shè)備外圍電路結(jié)構(gòu)與接口原理

?熟識(shí)Linux系統(tǒng)下硬件驅(qū)動(dòng)編程

?編程實(shí)現(xiàn)對嵌入式設(shè)備上LED燈的掌握

2.試驗(yàn)容

?閱讀UP-Magic210平臺(tái)硬件文檔,熟識(shí)ARM處理硬件外圍接口電路

?編程實(shí)現(xiàn)UP-Magic210平臺(tái)設(shè)備上LED驅(qū)動(dòng)及應(yīng)用測試程序

3.試驗(yàn)步驟

編寫UP-Magic210平臺(tái)設(shè)備上LED驅(qū)動(dòng)及應(yīng)用測試程序并進(jìn)行調(diào)試,該LED驅(qū)動(dòng)程序完成如下功能:

◆在核模塊初始化函數(shù)中,實(shí)現(xiàn)動(dòng)態(tài)申請?jiān)O(shè)備號(hào)并注冊該設(shè)備,動(dòng)態(tài)建立設(shè)備文件節(jié)

點(diǎn);

◆在核模塊的退出函數(shù)中,實(shí)現(xiàn)設(shè)備注銷,刪除該設(shè)備文件節(jié)點(diǎn);

◆實(shí)現(xiàn)file_operations設(shè)備驅(qū)動(dòng)文件結(jié)構(gòu)體中的ioctl函數(shù),完成如下功能:

?一次調(diào)用掌握全部的LED亮或滅;

?掌握單個(gè)LED亮或滅;

?實(shí)現(xiàn)流水燈顯示,流水燈顯示效果自行定義,流水燈循環(huán)顯示次數(shù)由用戶應(yīng)用程序傳入。

程序:

驅(qū)動(dòng)程序分析:

#include

#include

#include

#include

#include

#include

#include

#include

#include

MODULE_LICENSE("GPL");

#defineDEVICE_NAME"leds"http://驅(qū)動(dòng)名稱

#defineDEVICE_MAJOR231//驅(qū)動(dòng)主設(shè)備號(hào)

#defineDEVICE_MINOR0//驅(qū)動(dòng)次設(shè)備號(hào)

//聲明字符設(shè)備類結(jié)構(gòu)

structcdev*mycdev;

structclass*myclass;

dev_tdevno;

//LEDGPIO列表

staticunsignedlongled_table={

S3C_GPQ2,

S3C_GPQ3,

S3C_GPQ4,

S3C_GPQ5,

S3C_GPQ6,

};

//LEDGPIO輸出類型配置列表

staticunsignedintled_cfg_table={

S3C_GPQ2_OUTP,

S3C_GPQ3_OUTP,

S3C_GPQ4_OUTP,

S3C_GPQ5_OUTP,

S3C_GPQ6_OUTP,

};

//LEDIOCTRL處理函數(shù),主要完成從用戶空間傳遞數(shù)據(jù)進(jìn)行GPIO引腳設(shè)置功能

staticintuptech_leds_ioctl(structinode*inode,structfile*file,unsignedintcmd,unsignedlongarg)

{

switch(cmd){

case0:

case1:

if(arg>6){

return-EINVAL;

}

//LEDGPIO設(shè)置函數(shù)接口

s3c_gpio_setpin(led_table,!cmd);

return0;

default:

return-EINVAL;

}

}

//驅(qū)動(dòng)層file_operations接口函數(shù)初始化

staticstructfile_operationsuptech_leds_fops={

.owner=THIS_MODULE,

.ioctl=uptech_leds_ioctl,

};

//驅(qū)動(dòng)程序入口初始化函數(shù),設(shè)置LEDGPIO、向核注冊設(shè)備。staticint__inituptech_leds_init(void)

{

intret;

inti;

//注冊LED設(shè)備

devno=MKDEV(DEVICE_MAJOR,DEVICE_MINOR);//獵取設(shè)備號(hào)mycdev=cdev_alloc();

cdev_init(mycdev,//初始化字符設(shè)備err=cdev_add(mycdev,devno,1);//向系統(tǒng)添加LED設(shè)備if(err!=0)

printk("s3cledsdeviceregisterfailed!\n");

myclass=class_create(THIS_MODULE,"leds");

if(IS_ERR(myclass)){

printk("Err:failedincreatingclass.\n");

return-1;

}

//建立LED設(shè)備節(jié)點(diǎn)

class_device_create(myclass,NULL,MKDEV(DEVICE_MAJOR,DEVICE_MINOR),NULL,DEVICE_NAME,DEVICE_MINOR);

//LEDGPIO配置初始化

for(i=0;i

#include

#include

#include

intmain(intargc,char**argv)

{

inti;

inton;

intled_number;

intfd;

/*

依據(jù)命令行參數(shù)容,進(jìn)行掌握。將命令行參數(shù)1設(shè)置成LEDnumber,參數(shù)2設(shè)置成LED點(diǎn)亮熄滅狀態(tài)on

*/

if(argc!=3||sscanf(argv,"%d",

fprintf(stderr,"\t./ledled_numberon|off\n");

fprintf(stderr,"Options:\n");

fprintf(stderr,"\tled_numberfrom0to4\n");

fprintf(stderr,"\ton:1off:0\n");

exit(1);

}

//打開LED設(shè)備節(jié)點(diǎn)

fd=open("/dev/leds",0);

if(fdtm_gmtoff為:

#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff

修改boa.c:

修改:

if(setuid(0)!=-1){

DIE("ickyLinuxkernelbug!");

}

為:

//if(setuid(0)!=-1){

//DIE("ickyLinuxkernelbug!");

//}

修改defines.h:

修改:

#ifndefSERVER_ROOT

#defineSERVER_ROOT"/etc/boa"

#endif

為:

#ifndefSE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論