【问题标题】:Use different toolchain with configure on Linux在 Linux 上通过 configure 使用不同的工具链
【发布时间】:2013-09-12 14:24:29
【问题描述】:

我的目标系统 (arm) 的工具链已正确安装在 $TOOLCHAIN。

ls $TOOLCHAIN 的输出为:bin debug-root include lib lib32 lib64 sysroot

bin/*的内容不加前缀,即gcc、g++、as、...

现在,我有一个应用程序的源代码分发,我想用给定的工具链为这个目标系统编译。源代码分发有一个 configure 脚本。

如何做到这一点?提前致谢。

【问题讨论】:

  • 典型的交叉配置至少需要./configure --host=arm-linux --build=x86-linux 或类似的东西。通常还有许多其他程序和定义可能需要设置;您可能需要指定一个包。该包可能需要在构建机器上编译程序以及最终目标。

标签: linux gcc arm toolchain


【解决方案1】:

构建一个交叉编译器/binutils 通常非常困难,而且它不允许您测试您的程序。
虚拟机速度非常慢,并且会产生很强的分离性,这使得主机和虚拟机之间难以共享文件。

最简单的解决方案是Qemu-User-static:系统调用和指令以用户模式包装到本机内核。

下载或解压rootfs。

  • 将其复制到您真正根目录的子文件夹中。
  • 将 qemu-user-(您的 mips 架构的名称)-static 复制到目标目录的根目录。
  • 正确绑定挂载所有内容。
  • 将 /etc/resolv.conf 复制到 /your_path_to_target/etc/resolv.conf
  • 通过执行 /bin/bash 对其进行 Chroot。
  • 像使用真正的基于 mips 的机器一样使用 rootfs。

事情变得非常简单:许多库因为硬编码路径之类的原因而没有被编译(你会遇到很多;很多问题就像你在交叉编译中遇到的问题,一个典型的案例)时间>。就像你在本地构建包一样,你必须输入./configure

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 2011-08-13
    • 2022-01-09
    • 2017-12-23
    • 2014-05-09
    • 1970-01-01
    • 2018-04-28
    • 2015-10-02
    • 1970-01-01
    相关资源
    最近更新 更多