我正在尝试在我们的系统中设置 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)。
关于boost - 交叉编译 boost 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317107/