繁体   English   中英

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

[英]How to enable -mno-outline-atomics AArch64 flag?

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

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

所以我编辑了 aarch64 cmake 工具链文件(在此处找到)以包含以下内容:

set(CMAKE_C_FLAGS "-march=armv8-a -mno-outline-atomics")
set(CMAKE_CXX_FLAGS "-march=armv8-a -mno-outline-atomics")

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

-- 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 正确启用标志?

在 gcc 9.4 中添加了轮廓原子功能。

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0

显然,您的编译器太旧并且不支持它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM