我正在尝试设置一个scratchbox2配置,以使用包含实际raspian发行版副本的根分区来交叉编译rasberry pi软件。总体而言,这似乎可以正常工作,因为我可以运行arm可执行文件,但是因为我试图在没有前缀的复制根分区中使用gcc,因此名称转换无法正常工作。我如何chroot便笺式会话?在运行sb2之后运行chroot似乎不起作用。

最佳答案

初始化scratchbox2!后,无需chroot。您可以使用以下过程实现期望的结果:

确保在主机系统上设置了交叉编译工具。假设您在Linux主机(Ubuntu)上,则可以使用以下命令安装一个:sudo apt-get install gcc-arm-linux-gnueabihf(硬浮点数)或sudo apt-get install gcc-arm-linux-gnueabi
如果您在不同的主机上,或者您具有不同的交叉编译工具链(如codesourcery的工具链),只需确保安装适当的版本(hardfloat / soft float)并将编译器的路径导出到$ PATH并注意记下名称(前缀)。

确保已安装Qemu。
由于您已经安装了scratchbox2,因此假设主机PC上Rapberrypi的rootfs副本的路径存储在变量$ 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 sourcedirsb2 ./configuresb2 make -jNsb2 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/

09-06 03:47