【问题标题】:Issue with Boost libraries cross compilationBoost库交叉编译的问题
【发布时间】:2019-05-17 06:31:32
【问题描述】:

我正在尝试交叉编译 Boost,但最终出现以下错误。

我做了以下步骤:

  1. 解压 boost_1_68_0.tar.bz2
  2. 执行引导
  3. 编辑 user-config.jam 使用

    gcc:arm:arm-fslc-linux-gnueabi-g++
    
  4. 已执行./b2 --prefix=install toolset=gcc-arm --user-config=./user-config.jam
  5. 也执行了./bjam --prefix=install toolset=gcc-arm --user-config=./user-config.jam

但我最终遇到了以下错误:

    "arm-fslc-linux-gnueabi-g++"   -fPIC -pthread -O3 -finline-functions -Wno-inline -Wall  -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DNDEBUG  -I"." -c -o "bin.v2/libs/wave/build/gcc-arm/release/threading-multi/cpplexer/re2clex/aq.o" "libs/wave/src/cpplexer/re2clex/aq.cpp"

...failed gcc.compile.c++ bin.v2/libs/wave/build/gcc-arm/release/threading-multi/cpplexer/re2clex/aq.o...
gcc.compile.c++ bin.v2/libs/wave/build/gcc-arm/release/threading-multi/cpplexer/re2clex/cpp_re.o
libs/wave/src/cpplexer/re2clex/cpp_re.cpp:20:10: fatal error: ctime: No such file or directory
 #include <ctime>
          ^~~~~~~
compilation terminated.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这样的错误很多。

【问题讨论】:

  • 您可能应该添加一个--with-sysroot(或 Bjam 等效项)来告诉工具链在哪里可以找到标头和库。
  • @jww 究竟要添加什么路径到--with-sysroot
  • 我不使用 Boost,所以我不知道如何使用他们的工具。我有很多交叉编译的经验。根据您的问题记录,您没有提供 sysroot,但您需要提供一个,或者手动传递标头和库位置。 (当我快速搜索 Boost、Bjam 和 sysroot 时,我发现了很多匹配项。你为什么没有尝试过?)
  • 我包括 sysroot 但它仍然给出相同的错误,但我的工具链中有一件事要说,有一个 boost 1.66 版本,我正在尝试 1.68 版本,但我提到这些paths.so,有没有人认为这可能是我的问题
  • 拜托,任何人都可以帮助我,我已经坚持了一周

标签: linux boost cross-compiling


【解决方案1】:

问题出在 sysroot 上。我们还必须通过编译器传递 sysroot:

gcc : arm : arm-fslc-linux-gnueabi-g++ -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard --sysroot=/opt/iotgw-sdk-prod/sysroots/armv7at2hf-neon-fslc-linux-gnueabi

注意:空格应该是制表符,而不是空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    相关资源
    最近更新 更多