跨平台编译Boost出现问题

5

我正在尝试在我们的系统中设置Boost 1.42。我需要Boost编译常规的x86架构和使用Texas Instruments 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处理器,对于x86处理器则像这样调用:bjam toolset=gcc <some other options>。选项--toolset-root在这里提到

我遇到了以下问题:当我为ARM处理器构建我们的应用程序时,我会得到以下链接器错误:libboost_system-mt.a:无法读取符号:存档没有索引;运行ranlib添加一个。在我对存档运行arm_v5t_le-ranlib之后,它可以链接而没有问题。我猜测bjam使用ar代替arm-v5t_le-ar。如何告诉bjam应该使用哪个归档程序?
邮件列表上,有人说要在user-config.jam中指定,但不幸的是似乎不起作用。我最终还是遇到了相同的链接器错误。
谢谢。

1
我刚刚修复了Boost SVN中“存档没有索引”的问题。感谢您的报告。 - Vladimir Prus
1个回答

3

非常感谢。使用CMake进行Boost编译真是太棒了!现在设置交叉编译简直易如反掌。 - André
我理解的对吗,使用CMake需要设置一个“工具链文件”,如http://www.itk.org/Wiki/CMake_Cross_Compiling中所述? - Vladimir Prus
是的,这就是我所做的。 我的工具链文件包含以下内容: SET(CMAKE_SYSTEM_NAME Montavista) SET(CMAKE_C_COMPILER arm_v5t_le-gcc) SET(CMAKE_CXX_COMPILER arm_v5t_le-g++) - André

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接