交叉编译提升的问题

Posted

技术标签:

【中文标题】交叉编译提升的问题【英文标题】:Troubles with cross compiling boost 【发布时间】: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 中“存档没有索引”的问题。感谢您的报告。 【参考方案1】:

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

http://sodium.resophonic.com/boost-cmake/1.41.0.cmake0/ http://www.itk.org/Wiki/CMake_Cross_Compiling

【讨论】:

非常感谢。使用 cmake 进行提升真是太棒了!设置交叉编译现在是小菜一碟。 我对 CMake 是否必须设置一个“工具链文件”,如 itk.org/Wiki/CMake_Cross_Compiling 中所述? 是的,这就是我所做的。我的工具链文件包含以下内容: SET(CMAKE_SYSTEM_NAME Montavista) SET(CMAKE_C_COMPILER arm_v5t_le-gcc) SET(CMAKE_CXX_COMPILER arm_v5t_le-g++)

以上是关于交叉编译提升的问题的主要内容,如果未能解决你的问题,请参考以下文章

树莓派交叉编译(PS交叉编译链下载安装带WiringPi库交叉编译)

交叉编译一个automake项目?

交叉编译和交叉调试环境搭建及使用

arm-linux交叉编译器的路径设置问题,怎么办????

如何安装arm-liunx交叉编译环境?

LINUX交叉编译工具链和GCC是啥关系啊