PPP撥號(hào)在三星ARM2410平臺(tái)上的嫁接
3. 編譯 Tinylogin
$make CROSS=//arm-linux- PREFIX=//rootfs/ all
$make PREFIX=//rootfs install
4.交叉編譯 PPP:
交叉編譯呢,簡單地說,就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼。這里需要注意的是所謂 平臺(tái),實(shí)際上包含兩個(gè)概念:體系結(jié)構(gòu)(Architecture)、操作系統(tǒng)(Operating System)。同一個(gè)體系結(jié)構(gòu)可以運(yùn)行不同的操作系統(tǒng);同樣,同一個(gè)操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運(yùn)行。舉例來說,我們常說的x86 Linux平臺(tái)實(shí)際上是Intel x86體系結(jié)構(gòu)和Linux for x86操作系統(tǒng)的統(tǒng)稱;而x86 WinNT平臺(tái)實(shí)際上是Intel x86體系結(jié)構(gòu)和Windows NT for x86操作系統(tǒng)的簡稱。
$export CROSS_COMPILE=//arm-linux-
$export CC=//arm-linux-gcc
$make
這樣就在目錄: //ppp-2.4.1/pppd,//ppp-2.4.1/pppdump,//ppp-2.4.1/pppstats and //ppp-2.4.1/chat下得到了可執(zhí)行程序pppd,pppdump,pppstats 和 chat.
將它們復(fù)制到 //rootfs/usr/sbin 目錄下
移到文件系統(tǒng)根目錄
#mkdir etc dev
#cd dev
#mknod 600 console 5 1
#mknod ppp c 108 0
#cd
配制/etc目錄下的文件和文件夾,如: inittab fstab host.conf rc.d以便內(nèi)核參正確啟動(dòng)文件系統(tǒng)。
最后,從//3.3/lib目錄下選出所需要的庫文件放到文件系統(tǒng)根目錄rootfs/lib下面。
$su
#mkdir tmp/initrd
#dd if=/dev/zero of=images/initrd.img bs=1k count=8192
#/sbin/mke2fs –F –v –m0 images/initrd.img
#mount –o loop images/initrd.img tmp/initrd
#cp –av rootfs/* tmp/initrd
#umount tmp/initrd
#exit
$gzip –9 images/initrd.img > images/initrd.bin
這樣,就得到了我們所需要的uImage 和initrd.bin.將U-boot燒到板子上并設(shè)置好環(huán)境變量后就能通過tftp下載kernel 和ramdisk到目標(biāo)板上運(yùn)行了。
總結(jié):嵌入式linux下 應(yīng)用程序的移植,實(shí)際上是一個(gè)系統(tǒng)平臺(tái)轉(zhuǎn)換的過程。最好能先在宿主機(jī)(X86)上對(duì)程序源文件進(jìn)行從頭到尾的編譯、連接,讓它首先在宿主機(jī)上跑起來。弄清 每一個(gè)步驟及其工作的具體內(nèi)容,在向目標(biāo)板移植的過程中一定要保證交叉編譯,其它文件配置和操作步驟跟宿主機(jī)上幾乎完全一樣。
評(píng)論