我正在尝试设置一个scratchbox2配置,以便使用包含真实raspian发行版副本的根分区来交叉编译rasberry pi软件。总体而言,这看起来还不错,因为我可以运行arm可执行文件,但是因为我试图在复制的根分区中使用gcc,所以名称转换不起作用。如何对scratchbox会话进行chroot?在运行sb2之后运行chroot似乎不起作用。
发布于 2013-06-23 22:38:15
在初始化scratchbox2!之后,您不需要执行chroot。您期望的结果可以通过以下步骤实现:
确保在主机系统上设置了交叉编译工具。假设您在linux主机(Ubuntu)上,您可以使用以下命令安装一个:
sudo apt-get install gcc-arm-linux-gnueabihf (硬浮点)或
sudo apt-get install gcc-arm-linux-gnueabi
如果你在不同的主机上,或者你有一个不同的交叉编译工具链,就像codesourcery的工具链一样,只要确保你安装了适当的版本(硬浮点/软浮点),并将编译器的路径导出到$PATH,并记下名称(前缀)。
确保您已经安装了Qemu。
由于您已经安装了scratchbox2,因此假设主机pc上的Rapberrypi副本的路径存储在变量$raspirootfs中,
cd $raspirootfs
现在使用以下命令初始化sb2:
sb2-init raspberrypi arm-linux-gnueabi-gcc
其中,raspberrypi只是目标配置的名称。用你的交叉编译器前缀替换arm-linux-gnuabi-gcc。
如果这是您的第一个目标配置(如果这是您第一次运行sb2-init),您可以输入以下命令,使用默认的目标配置启动sb2:
sb2 -eR
这应该会给出如下提示:
[SB2 emulate raspberrypi] user@pc #
现在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/
https://stackoverflow.com/questions/16243467
复制相似问题