Linux包交叉编译

我使用一台运行Arch Linux的单板计算机(Pandaboard)构build一个非视觉监控(声纳)平台。 问题是,当我需要为我的安装添加一个function时, makemake install进程将永远在低功耗的计算机上运行。 我希望有相似经验的人指点我一个解决scheme,在另一个Linux机器上编译软件包(也运行Arch),然后将它们移植到SBC。

您是否阅读或访问过“ Linux格式 ”杂志? 在这个问题上有一篇关于这个问题的文章。目标是Raspberry Pi,但过程是一样的。

基本上,你需要在你的x86机器上安装一个交叉编译器。 尝试这个:

 yaourt -S arm-linux-gnueabi-gcc 

在你继续之前,用一个简单的hello,world测试这个工具链,你可以在x86上编译这个hello,world ,复制到设备并执行。

 /* hello.c */ #include <stdio.h> int main () { printf("Hello, World!\n"); return 0; } 

编译命令将是类似的东西

 arm-linux-gnueabi-gcc -o gello hello.c 

有了这个,你可以交叉编译一个内核:

 git clone --depth 1 git://github.com/raspberrypi/linux.git cd linux ssh root@alarmpi zcat /proc/config.gz > .config make -j 8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig -k 

您可以使用distcc在pandaboard上执行构建,但是可以将comppilation委托给您的x86机器,它将使用您的交叉编译器工具链进行arm编译。 在arm和x86上:

 pacman -S distcc 

手臂一方是客户。 编辑它的配置/etc/makepkg.conf来告诉它关于服务器(你的x86机器):

 BUILDENV=(fakeroot distcc color !ccache) DISTCC_HOSTS="myx86host" MAKEFLAGS="-j8" 

j8告诉它利用i7上的所有内核。 适当调整。

在服务器上,您需要配置distccd /etc/conf.d/distccd以允许客户端连接,然后启动distccd守护进程。 然后,从客户端启动您的构建版本。

构建Arch软件包的makepkg工具负责distcc链接。 如果你正在构建你自己的软件包,我建议你把它们包装在一个PKGBUILD中,这样你的工作就完成了。

(如果你的电路板使用它,你可能需要调整上面的一些硬浮点数)