【发布时间】:2010-02-23 09:49:27
【问题描述】:
我正在尝试在我们的系统中设置 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: could not read symbols: Archive has no index;运行ranlib 添加一个。在我在存档上运行 arm_v5t_le-ranlib 后,它的链接没有问题。我的猜测是 bjam 使用 ar 而不是 arm-v5t_le-ar。我如何告诉 bjam 它应该使用哪个归档器?
在mailing list 上,据说在 user-config.jam 中也指定了<archiver>,但不幸的是它似乎不起作用。我最终得到相同的链接器错误。
谢谢。
【问题讨论】:
-
我刚刚解决了 Boost SVN 中“存档没有索引”的问题。感谢您的报告。
标签: boost cross-compiling