日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

在freeBSD下編譯linux kernel

FreeBSD的make和gcc與Linux下的版本并不是完全兼容,所以在Makefile、C source文件中的
一些語(yǔ)法將無(wú)法通過(guò) 。

我們第一個(gè)需要解決的問(wèn)題是升級(jí)gcc&make到兼容linux的版本 。如果FreeBSD支持ELF32的格式
的話,那么直接復(fù)制到FreeBSD上的一個(gè)目錄我們假定為/home/camp,將/home/camp加入到PATH
變量的最前端 PATH=/home/camp:$PATH

接下來(lái)我們做編譯內(nèi)核的基本工作:
在/usr/src目錄下解開(kāi)linux kernel packet

cd /usr/include
rm -rf asm linux scsi
ln -s /usr/src/linux/include/asm-i386 asm
ln -s /usr/src/linux/include/linux linux
ln -s /usr/src/linux/include/scsi scsi

make config
make dep
make clean
make bzImage

當(dāng)我們開(kāi)始編譯的時(shí)候,總是能看到一些奇怪的錯(cuò)誤,這是為什么呢?是因?yàn)樵贐SD的環(huán)境下,
有許多的宏(Macro)沒(méi)有定義,比如說(shuō)__linux__, __i386__, linux 。那么我們打開(kāi)
/usr/src/linux/Makefile文件,并在編譯器的參數(shù)中加入 –D__linux__, -D__i386__, -Dlinux 。

CC =$(CROSS_COMPILE)cc -D__KERNEL__ -D__linux__ -Dlinux -D__i386__ -I$(HPATH)

呵呵,大部分的問(wèn)題已經(jīng)解決了 。但是可別忘記linux kernel中還包含一部分的8086代碼,并且
所有的obj文件需要鏈接 。這個(gè)時(shí)候我們需要as,as86,ld,ld86和一個(gè)名叫l(wèi)ibbfd-2.9.5.0.22.so
的庫(kù)文件,我們將執(zhí)行文件復(fù)制到/home/camp,將庫(kù)文件復(fù)制到/usr/lib中 。

再試一次 make bzImage,呵呵,我們的new kernel順利的生成落 。

    推薦閱讀