Linux包交叉编译

时间:2013-01-22 14:47:40

标签: linux compilation cross-compiling archlinux pandaboard

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

1 个答案:

答案 0 :(得分:2)

您是否阅读或有权访问 Linux Format 杂志?问题166中有一篇关于这个问题的文章。目标是Raspberry Pi,但过程是一样的。

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

yaourt -S arm-linux-gnueabi-gcc

在进一步研究之前,使用可在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中,以便为您完成工作。

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