如何在交叉编译arm时处理像Boost这样的库?

时间:2015-06-05 17:25:18

标签: ubuntu cmake g++ cross-compiling beagleboneblack

我想将我的AMD64桌面交叉编译为ARM7 for Beagleboard Black。所以我从这开始就安装了交叉编译器:

  <div class="form-group">
    <%= f.label :cardinal_point_id, "Orientacion:", :class => "control-label" %>
    <%= f.select :cardinal_point_id , CardinalPoint.all.collect  {|p| [ p.name, p.id ] }, { :include_blank => 'Seleccione un Punto Cardinal'}, :class => "form-control" %>
  </div>

我还创建了一个cmake工具链文件:

sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

当我运行cmake时,我发现它确实找到了正确的编译器。但是,我如何处理需要链接的库?例如,提升?我假设我需要在我的x86 / amd64桌面上使用这些库的arm版本,以便编译和链接工作。

以下是我尝试运行cmake时看到的错误消息示例:

set (CMAKE_SYSTEM_NAME Linux)
set (CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set (CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

1 个答案:

答案 0 :(得分:2)

是的,您需要不是仅为ARM构建的标头的boost库。 这个问题涉及:cross compile Boost 1.57.0 on ubuntu for arm

要使find_package之类的内容适用于交叉编译,您应该设置CMAKE_FIND_ROOT_PATH

假设您将CMAKE_FIND_ROOT_PATH设置为/opt/beagleboard。然后,CMake将首先在/opt/beagleboard/lib/opt/beagleboard/usr/lib查找库,因此请在那里安装库,它应该可以正常工作。

可以在http://www.vtk.org/Wiki/CMake_Cross_Compiling找到与交叉编译相关的各种CMake设置的详细说明。

相关问题