5

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

ARM 处理器的工具链基于 gcc。gcc、ar、ranlib 等工具都以 arm_v5t_le- 为前缀。关于交叉编译的文档有些有限。以下是我所做的: 我在 user-config.jam 文件中添加了以下内容:using gcc : arm : arm_v5t_le-g++ ;从我们的 Makefile 调用 Bjam,如下所示: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 选项。

我遇到了以下问题:当我为 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 它应该使用哪个归档器?

在一个邮件列表上,据说它<archiver>也在 user-config.jam 中指定,但不幸的是它似乎不起作用。我最终得到相同的链接器错误。

谢谢。

4

1 回答 1

3

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

于 2010-02-23T10:09:32.453 回答