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

Jon*_*ave 16 cross-compilation software-installation

我编写了一个大型应用程序。我可以在以下场景中成功编译应用程序:

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

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

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

use*_*421 6

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 页面中进行了介绍)。您还应该避免在编译后立即运行外部二进制文件。

此外,它在使用 autotools 时确实最为成熟。

我让我的包快速交叉编译。

apt-get build-dep -aarmhf foo-pkg
apt-get source foo-pkg
cd foo-pkg-*
dpkg-buildpackage -aarmhf
Run Code Online (Sandbox Code Playgroud)

  • 请解释这些步骤的作用,以及开关 -aarmhf 是什么。许多用户对它们并不熟悉,需要他们深入搜索另一层以获得可用的答案。谢谢。 (3认同)