【问题标题】:Linux package cross-compilationLinux 包交叉编译
【发布时间】:2013-01-22 14:47:39
【问题描述】:

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

【问题讨论】:

  • Google 似乎找到了一些有用的文章,例如npascut1.wordpress.com/2012/01/10/…
  • 看起来很有趣 Paul R。谢谢!我担心这对我的专业水平来说可能有点过分,但我还是会检查一下。
  • 还可以查看here,了解有关使用 Ubuntu 构建机器的一些基本说明。 Paul R 的链接包含更多关于交叉编译的信息。
  • linuxfromscratch.org 拥有在其他服务器上编译代码并在其他服务器上运行 em 的最佳方法。您需要创建一个 chroot 环境来运行您的交叉编译工具链。

标签: linux compilation cross-compiling archlinux pandaboard


【解决方案1】:

您是否阅读或访问过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 上执行构建,但让它将编译委托给您的 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 中,以便为您完成工作。

(如果您的电路板使用硬浮动,您可能需要调整以上部分内容)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2011-08-04
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多