boost - 交叉编译 boost 的问题

标签 boost cross-compiling

我正在尝试在我们的系统中设置 Boost 1.42。我需要 Boost 来使用 gcc 为常规的 x86 架构进行编译,我需要为德州仪器的 ARM 处理器进行交叉编译。

ARM 处理器的工具链基于 gcc。 gcc、ar、ranlib 等工具都以 arm_v5t_le- 为前缀。 documentation关于交叉编译有些限制。这是我所做的:
我在 user-config.jam 文件中添加了以下内容:using gcc : arm : arm_v5t_le-g++ ; Bjam 是从我们的 Makefile 中调用的,如下所示:bjam toolset=gcc-arm --toolset-root=/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/bin <some other options>为 ARM 处理器编译,像这样:bjam toolset=gcc <some other options>对于 x86 处理器。提到了选项 --toolset-root here .

我遇到了以下问题:
当我为 ARM 处理器构建应用程序时,我收到以下链接器错误:libboost_system-mt.a:无法读取符号:存档没有索引;运行 ranlib 添加一个。在我在存档上运行 arm_v5t_le-ranlib 后,它链接起来没有问题。我的猜测是 bjam 使用 ar 而不是 arm-v5t_le-ar。我如何告诉 bjam 它应该使用哪个归档程序?

mailing list据说要指定 <archiver>在 user-config.jam 中也是如此,但不幸的是它似乎不起作用。我最终遇到了相同的链接器错误。

谢谢。

最佳答案

尝试基于 CMake 的 Boost 构建,它可能能够比 BJam 更好地进行跨平台构建。至少我在这方面取得了成功(但我从未尝试过 ARM)。

  • http://sodium.resophonic.com/boost-cmake/1.41.0.cmake0/
  • http://www.itk.org/Wiki/CMake_Cross_Compiling
  • 关于boost - 交叉编译 boost 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317107/

    相关文章:

    c++ - boost::bind、boost::lambda::bind 和 boost::phoenix::bind 之间的区别

    c++ - Building boost - build.bat 不被识别为程序

    c++ - 如何使用 boost::bind 附加参数?

    c++ - Boost MPI 的 Autoconf 宏?

    c++ - 线程 C++ 上的用户 I/O

    C++程序在vs代码中出错时使用haskell编译器

    c++ - 使用new和delete时交叉编译报错

    llvm - 如何为 MMIX 编译 Rust

    compiler-errors - 为arduino yun交叉编译ndn-cxx

    qt - 为 Pandaboard 交叉编译 Qt