2013-04-26 65 views
3

我正在嘗試設置scratchbox2配置,以使用包含真正raspian分發副本的根分區交叉編譯rasberry pi軟件。這似乎總體上工作正常,因爲我可以運行arm可執行文件,但是因爲我試圖在沒有前綴的複製根分區中使用gcc,所以名稱轉換不起作用。我如何chroot scratchbox會話?運行sb2後運行chroot似乎不起作用。chroot scratchbox2會話?

回答

4

初始化scratchbox2!後無需chroot !.使用以下步驟可以達到您期望的效果:

確保您在主機系統上設置了交叉編譯工具。假設你是一個Linux主機(Ubuntu的),您可以通過安裝一個:
sudo apt-get install gcc-arm-linux-gnueabihf(硬浮動)OR
sudo apt-get install gcc-arm-linux-gnueabi

如果你是一個不同的主機上,或者你有不同的工具鏈像編碼源的工具鏈交叉編譯,只要確保你安裝了適當的版本(hardfloat/soft float)並將編譯器的路徑導出到$ PATH並記下名稱(前綴)。

確保您安裝了Qemu。
既然你已經安裝了scratchbox2,假設路徑到Rapberrypi的根文件系統的PC主機的副本存儲在變量$ raspirootfs,
cd $raspirootfs
現在使用初始化SB2:
sb2-init raspberrypi arm-linux-gnueabi-gcc
哪裏raspberrypi只是目標配置的名稱。用您的交叉編譯器前綴替換arm-linux-gnuabi-gcc
如果這是你的第一個目標配置(如果這是第一次您正在運行SB2-INIT),你可以通過輸入開始默認的目標配置SB2:
sb2 -eR
這應該給你一個提示,如:
[SB2 emulate raspberrypi] [email protected]#
現在sb2處於模擬模式,而不是正常模式,它會嘗試遠離主機二進制文件並使用qemu在$ raspirootfs中執行二進制文件。
在終端中輸入sb2-show path /etc/apt以查看/ etc/apt的映射方式。它應該顯示如/etc/apt --> $raspirootfs/etc/apt(而不是主機系統的/ etc/apt)。
安裝到仿真系統中:
只要按照您在主機系統上的操作即可。例如:
apt-get install build-essential
交叉編譯一些來源:
cd sourcedir
sb2 ./configure
sb2 make -jN
sb2 make install DESTDIR=$raspirootfs

對於那些試圖建立使用scratchbox2一個交叉編譯環境,我已經做了張貼在這裏:http://praveenp.com/setting-up-a-cross-compiling-environment-to-build-linux-applications-for-embedded-targets/。對於使用chroot進行交叉編譯,你可以參考這篇文章:http://praveenp.com/setting-up-an-environment-using-chroot-for-developing-applications-for-embedded-targets/

+0

謝謝,幾周前我設法使用debootstrap和sb2 -eR來開發powerpc和raspberry pi。有一些技巧可以說服apt-get工作。主要的技巧是使用debootstrap來創建一個tar,使用--foreign從tar進行安裝,解壓第一步創建的tar以獲取/ var/cache/apt/*中的所有文件(我忘記了確切的路徑)然後使用sb2 -eR中的所有deb軟件包在目錄中運行dpkg --force-depends *。這有點醜陋,但經過這些步驟,它是一個完全功能的環境。 – John 2013-06-29 23:42:32

+0

編譯器有點慢,因爲它們通過qemu-arm運行,但它的工作原理。如果有人想要詳細的步驟,我可以在某處張貼博客文章。 – John 2013-06-29 23:43:07

+0

我已經更新了我的答案,並附有詳細介紹交叉編譯步驟的博客文章鏈接。 – PraveenPalanisamy 2013-08-17 14:06:52