国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
交叉編譯模擬環(huán)境sbox2的使用

sbox2簡(jiǎn)介

scratchbox2(簡(jiǎn)稱(chēng)sbox2)是一個(gè)交叉編譯模擬器,可以模擬ARMX86、MIPS等平臺(tái)。scratchbox2scratchbox1的第二版。但是第二版完全舍棄的第一版,在使用上第二版比第一版方便、易用很多。

20094月,Scratchbox2正式發(fā)布,20103月,Nokia正式接手scratchbox2 的維護(hù)工作。Nokia接手Scratchbox2的目的很明顯,就是為Maemo手機(jī)平臺(tái)提供一個(gè)模擬的軟件開(kāi)發(fā)環(huán)境。

Scratchbox2的使用要配合qemu、交叉工具鏈和目標(biāo)平臺(tái)的根文件系統(tǒng)來(lái)使用。qemu是目標(biāo)平臺(tái)的CPU虛擬機(jī),如ARM的虛擬機(jī)是qemu-arm。交叉工具鏈可以是自己制作的,或者從CodeSourcery網(wǎng)站等下載的交叉編譯工具鏈。根文件系統(tǒng)是目標(biāo)平臺(tái)的根文件系統(tǒng)。

 

安裝scratchbox2qemu

ubuntu10.04下可以使用apt-get install安裝scratchbox2qemu-arm。其中qemu-arm包含在qemu-kvm-extras中,安裝如下:

$ sudo apt-get install scratchbox2 qemu-kvm-extras

 

安裝交叉編譯工具鏈

這里我們使用的是用crosstool制作的gcc-3.4.5-glib-2.3.6的交叉工具鏈,工具鏈安裝在/opt/crosstool/目錄下,如:

$ ls /opt/crosstool/gcc-3.4.5-glibc-2.3.6/

arm-linux                      bin          include  lib      man

arm-linux.crosstoolconfig.txt  distributed  info     libexec  tmp

 

準(zhǔn)備根文件系統(tǒng)

目標(biāo)平臺(tái)的根文件系統(tǒng)必須遵循FHS 根文件系統(tǒng)結(jié)構(gòu),根文件系統(tǒng)的必要內(nèi)容是在lib目錄下必須有C動(dòng)態(tài)庫(kù)。

如下,建立根文件系統(tǒng)和拷貝必要C庫(kù)。

$ cd /opt

$ mkdir myrootfs

$ cd myrootfs/

$ mkdir bin dev etc lib sbin usr tmp proc sys

$ cp -a /opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/* lib/

這里以/opt/myrootfs作為目標(biāo)平臺(tái)的根目錄,并且拷貝了gcc-3.4.5-glibc-2.3.6工具鏈的C庫(kù)到這個(gè)根目錄下。

 

配置模擬環(huán)境

以上3步完成之后,下面就可以使用安裝的scratchbox2配置目標(biāo)平臺(tái)的模擬環(huán)境。配置模擬環(huán)境使用的是sb2-init工具,如下:

$ sudo sb2-init -c qemu-arm  ARM3.4.5  /opt/crosstool/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc

其中,“-c qemu-arm ”表示使用qemu-arm虛擬機(jī);“ARM3.4.5”表示這次配置的模擬環(huán)境的名稱(chēng);“/opt/crosstool/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc ”表示在這個(gè)模擬環(huán)境中gcc對(duì)應(yīng)的程序是哪個(gè)。

第一次配置時(shí),會(huì)先下載安裝libtool,配置成功,出現(xiàn)下面的提升。

sb2-init completed successfully, have fun!

 

使用模擬器

模擬環(huán)境配置好后,就可以在任何地方使用sb2來(lái)編程程序,如要交叉編譯hello.c程序:

$ sudo sb2 gcc hello.c -o hello

查看編譯出來(lái)的hello程序信息,可以看到在sbox2模擬環(huán)境中,使用gcc編譯的程序是基于arm平臺(tái)的,如下:

$ file hello

hello: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped

可以在模擬環(huán)境中運(yùn)行程序:

$ sudo sb2 ./hello

hello farsight!

 

也可以完全進(jìn)入SB2的模擬環(huán)境中,進(jìn)行軟件的編譯:

$ sudo sb2 -t ARM3.4.5

-t ARM3.4.5”表示使用哪個(gè)虛擬環(huán)境,對(duì)應(yīng)sb2-init配置時(shí)指定的虛擬環(huán)境名稱(chēng)。進(jìn)入模擬環(huán)境的界面如下:

[SB2 simple ARM3.4.5] root@dtop ~ $

這個(gè)環(huán)境就是目標(biāo)機(jī)的模擬環(huán)境,查看gcc版本信息:

[SB2 simple ARM3.4.5] root@dtop ~ $ gcc -v

Reading specs from /opt/crosstool/gcc-3.4.5-glibc-2.3.6/bin/../lib/gcc/arm-linux/3.4.5/specs

Reading specs from /usr/share/scratchbox2/../../share/scratchbox2/modeconf/gcc-specs.simple

rename spec cpp to old_cpp

Configured with: /work/tools/create_crosstools/crosstool-0.43/build/arm-linux/gcc-3.4.5-glibc-

2.3.6/gcc-3.4.5/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/work/

tools/gcc-3.4.5-glibc-2.3.6 --with-float=soft --with-headers=/work/tools/gcc-3.4.5-glibc-2.3.6/

arm-linux/include --with-local-prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long

Thread model: posix

gcc version 3.4.5

可以看到,在模擬環(huán)境中,gcc是交叉工具鏈的arm-linux-gcc

 

綜述

sbox2配置的模擬環(huán)境中編譯一些利用autotool發(fā)布的開(kāi)源軟件比普通的交叉編譯方法方便很多。如SDL、ffmpegvlc等軟件在這個(gè)模擬器下編譯,在配置時(shí)只需使用 “ –prefix ”選項(xiàng)指定安裝路徑就可以了。指定--prefix選項(xiàng)之后,make install時(shí)會(huì)把程序安裝到--prefix指定的目錄,此時(shí)用ldd來(lái)查看程序動(dòng)態(tài)鏈接庫(kù)依賴(lài)關(guān)系,會(huì)看到程序依賴(lài)本身動(dòng)態(tài)庫(kù)的路徑與--prefix指定有關(guān)。但是這并不是意味著程序運(yùn)行時(shí)一定只能到--prefix指定的目錄尋找該動(dòng)態(tài)庫(kù),實(shí)際上,會(huì)在LD_LIBRARY_PATH指定目錄、/lib和/usr/lib標(biāo)準(zhǔn)庫(kù)目錄、/etc/ld.conf中的目錄尋找動(dòng)態(tài)庫(kù)。所以把--prefix中的動(dòng)態(tài)庫(kù)移動(dòng)到/lib或/usr/lib中程序同樣能夠正常運(yùn)行。有了這種方式,交叉編譯時(shí)利用--prefix指定安裝目錄,不影響宿主機(jī),還可以把--prefix中的安裝庫(kù)文件直接拷貝到目標(biāo)機(jī)的/lib或/usr/lib中,程序正常運(yùn)行。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Ubuntu 10.04搭建Scratchbox交叉編譯環(huán)境
移植lighttpd到arm
構(gòu)建嵌入式 Linux 開(kāi)發(fā)環(huán)境 V0.1
JZ2440移植Qte4.4.3
搭建交叉調(diào)試環(huán)境arm
幾種Linux嵌入式開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服