如何在 Ubuntu 12.04 i386 主机上交叉编译适用于 Ubuntu 12.04 armhf 架构的应用程序?

如何在 Ubuntu 12.04 i386 主机上交叉编译适用于 Ubuntu 12.04 armhf 架构的应用程序?

我编写了一个大型应用程序。我可以在以下情况下成功编译该应用程序:

  • 在运行 Ubuntu 12.04 的 i386 主机上进行本机编译
  • 在运行 Ubuntu 12.04 的 PandaBoard 上本地运行(这需要很长时间)
  • 在主机 PC 上使用 Qemu 和 chroot 作为 armhf PandaBoard 目标(这需要很长时间)

我想在 i386 主机上交叉编译应用程序,以便在 PandaBoard 等目标上运行,以便及时完成构建。到目前为止,使用存储库中的 arm-linux-gnueabihf 工具链进行的尝试产生了无法正确运行的二进制文件。目前,我还没有打包软件的计划。

实现成功交叉编译的推荐方法是什么?

答案1

https://wiki.linaro.org/Platform/DevPlatform/CrossCompile/UsingMultiArch

https://wiki.ubuntu.com/MultiarchCross

Ubuntu 有一个跨工具链,apt-get install gcc-arm-linux-gnueabihf但下一代工具链的工作在这里讨论:http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/

此时需要采取一些解决方法。例如,如果您使用间接链接(在 linaro wiki 页面中介绍)。您还应避免在编译外部二进制文件后立即运行它们。

此外,它的自动工具确实最为成熟。

我很快就完成了包的交叉编译。

apt-get build-dep -aarmhf foo-pkg
apt-get source foo-pkg
cd foo-pkg-*
dpkg-buildpackage -aarmhf

相关内容