账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    C++ - Boost arm (aarch64) 交叉编译问题
    117
    0

    I've tried ver. 1.64.0. Cross-compilation for aarch64
    boost采用1.64.0版本;交叉编译的使用平台式centos 7,目标平台是aarch64;交叉编译工具

    第一步:

    ./bootstrap.sh

    第二步:

    修改 project-config.jam 如下:

    ...
    if ! gcc in [ feature.values <toolset> ]
    {
        using gcc : arm : /home/xxx/arm/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc ; 
    }
    ...
    # These settings are equivivalent to corresponding command-line
    # options.
    option.set prefix : /home/xxx/arm/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu ;
    option.set exec-prefix : /home/xxx/arm/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin ;
    option.set libdir : /home/xxx/arm/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/lib ;
    option.set includedir : /home/xxx/arm/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/include ;
    ...
    

    错误信息:

    ./b2 link=static --without-python --without-context --without-coroutine --no-samples --no-tests --stagedir=stage-aarch64 -j4 stage
    

    This gives me an error like:

    gcc.compile.c++ bin.v2/libs/context/build/gcc-arm/release/link-static/threading-multi/unsupported.o
    libs/context/src/unsupported.cpp:7:2: error: #error "platform not supported"
     #error "platform not supported"
      ^~~~~
    
        "/home/xxx/arm/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread  -DBOOST_ALL_NO_LIB=1 -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG  -I"." -c -o "bin.v2/libs/context/build/gcc-arm/release/link-static/threading-multi/unsupported.o" "libs/context/src/unsupported.cpp"
    
    ...failed gcc.compile.c++ bin.v2/libs/context/build/gcc-arm/release/link-static/threading-multi/unsupported.o...
    

    尝试过采用bjam 替代b2,也没有用

    请问谁有遇到过类似问题

    1
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 薄荷微光都很凉。 普通会员 1楼

      Boost Arm(也称为Aarch64 Arm Cross-Targeting)是一种支持Aarch64架构的交叉编译技术。它能够让你的C++代码在Aarch64平台上运行,而无需手动编写针对Aarch64架构的特殊代码。

      然而,交叉编译过程可能会遇到一些问题。以下是一些可能的常见问题:

      1. 依赖库:交叉编译过程中,你需要使用一个目标库来链接你的代码。如果你的代码依赖于其他库,那么你需要确保这些库也在你的目标平台上可用。

      2. 硬件兼容性:Aarch64架构的CPU和操作系统可能与你的C++代码的兼容性有所不同。例如,Aarch64的指令集可能与你的CPU不同,或者你的操作系统可能不支持某些硬件特性。

      3. 编译器问题:交叉编译需要一个目标编译器来将C++代码转换为机器代码。如果你的编译器不支持Aarch64,那么你可能无法成功编译你的代码。

      4. 编译选项:交叉编译过程中,你可能需要使用一些特殊的编译选项来优化你的代码。如果你的编译选项不正确,那么你的代码可能无法正确运行。

      解决这些问题的常见方法是:

      1. 安装目标库:确保你的代码依赖的库在你的目标平台上可用。你可以通过在你的源代码中链接库来实现这一点。

      2. 确保硬件兼容性:在编译你的代码之前,确保你的代码已经正确地处理了Aarch64架构的硬件特性。

      3. 使用正确的编译器:确保你的编译器支持Aarch64。你可以通过查阅编译器的文档或在网上查找解决方案来实现这一点。

      4. 适当设置编译选项:在交叉编译你的代码时,确保你已经正确地设置了编译选项。你可以查阅编译器的文档或在网上查找解决方案来实现这一点。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部