我正在尝试在我们的系统中设置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++ ;
从我们的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>
for x86处理器。选项--toolset-root被提到here。
我遇到了以下问题: 当我为ARM处理器构建应用程序时,我得到以下链接器错误:libboost_system-mt.a:无法读取符号:存档没有索引;运行ranlib添加一个。我在存档上运行arm_v5t_le-ranlib后,链接没有问题。我的猜测是bjam使用ar而不是arm-v5t_le-ar。如何告诉bjam它应该使用哪个归档器?
在mailing list上,据说也在user-config.jam中指定了<archiver>
,但遗憾的是它似乎不起作用。我最终得到了相同的链接器错误。
感谢。
答案 0 :(得分:3)
尝试基于CMake的Boost构建,可能比BJam更好地进行跨平台构建。至少我已经取得了成功(但我从未尝试过ARM)。