2013-04-26 51 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