首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启用-mno-outline-atomics AArch64标志?

如何启用-mno-outline-atomics AArch64标志?
EN

Stack Overflow用户
提问于 2020-12-11 02:00:44
回答 1查看 435关注 0票数 0

我一直在尝试为AArch64交叉编译一个开源库。当我在Raspberry Pi 4(运行64位操作系统)上运行链接到这个库的可执行文件时,我得到了一个非法的指令错误。

我创建了一个github问题,库开发人员建议我启用-mno-outline-atomics编译器标志(有关github问题here的更多详细信息)。有关标志本身的更多详细信息,请参阅here

因此,我编辑了aarch64 cmake工具链文件(发现了here),使其包含以下内容:

代码语言:javascript
复制
set(CMAKE_C_FLAGS "-march=armv8-a -mno-outline-atomics")
set(CMAKE_CXX_FLAGS "-march=armv8-a -mno-outline-atomics")

但是,当我尝试编译库时,我得到以下错误消息:

代码语言:javascript
复制
-- CMAKE_TOOLCHAIN_FILE = /home/cyrus/work/c-sdks/3rd_party_libs/ncnn/toolchains/aarch64-linux-gnu.toolchain.cmake
-- CMAKE_INSTALL_PREFIX = /home/cyrus/work/c-sdks/3rd_party_libs/ncnn/build_aarch64/install
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc - broken
CMake Error at /usr/local/share/cmake-3.17/Modules/CMakeTestCCompiler.cmake:60 (message):
  The C compiler

    "/usr/bin/aarch64-linux-gnu-gcc"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /home/cyrus/work/c-sdks/3rd_party_libs/ncnn/build_aarch64/CMakeFiles/CMakeTmp
    
    Run Build Command(s):/usr/bin/make cmTC_65def/fast && /usr/bin/make -f CMakeFiles/cmTC_65def.dir/build.make CMakeFiles/cmTC_65def.dir/build
    make[1]: Entering directory '/home/cyrus/work/c-sdks/3rd_party_libs/ncnn/build_aarch64/CMakeFiles/CMakeTmp'
    Building C object CMakeFiles/cmTC_65def.dir/testCCompiler.c.o
    /usr/bin/aarch64-linux-gnu-gcc   -march=armv8-a -mno-outline-atomics    -o CMakeFiles/cmTC_65def.dir/testCCompiler.c.o   -c /home/cyrus/work/c-sdks/3rd_party_libs/ncnn/build_aarch64/CMakeFiles/CMakeTmp/testCCompiler.c
    aarch64-linux-gnu-gcc: error: unrecognized command line option ‘-mno-outline-atomics’; did you mean ‘-fno-inline-atomics’?
    CMakeFiles/cmTC_65def.dir/build.make:82: recipe for target 'CMakeFiles/cmTC_65def.dir/testCCompiler.c.o' failed
    make[1]: *** [CMakeFiles/cmTC_65def.dir/testCCompiler.c.o] Error 1
    make[1]: Leaving directory '/home/cyrus/work/c-sdks/3rd_party_libs/ncnn/build_aarch64/CMakeFiles/CMakeTmp'
    Makefile:138: recipe for target 'cmTC_65def/fast' failed
    make: *** [cmTC_65def/fast] Error 2

为什么编译器会对此抱怨:unrecognized command line option ‘-mno-outline-atomics’

如何使用CMake正确启用标志?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-11 03:04:31

轮廓-原子功能是在gcc 9.4中添加的。

代码语言:javascript
复制
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0

很明显,你的编译器太旧了,不支持它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65239845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档