【问题标题】:gcc-7: error: unrecognized command line option ‘-m64’gcc-7:错误:无法识别的命令行选项“-m64”
【发布时间】:2020-02-03 05:54:52
【问题描述】:

我正在尝试在 Jetson Nano 上编译 C 代码,但在编译过程中出现此错误。我尝试删除任何出现的“m -64”,但它似乎是自动添加的。这是失败的 cmd:/usr/bin/gcc-7 -Wall -Wextra -Wconversion -pedantic -Wshadow -m64 -Wfatal-errors -O0 -g -o CMakeFiles/dir/testCCompiler.c.o -c /home/user/dir/CMakeFiles/CMakeTmp/testCCompiler.c

uname -a: Linux jetson-nano 4.9.140-tegra aarch64 aarch64 aarch64 GNU/Linux

gcc-7 -v: Using built-in specs.
COLLECT_GCC=gcc-7
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1)
CMAKE_C_COMPILER = gcc-7
CMAKE_CXX_COMPILER = g++-7

CXX_COMPILE_FLAGS =  "-Wall -Werror -Wextra -Wnon-virtual-dtor -Wconversion -Wold-style-cast -pedantic -Wshadow"
C_COMPILE_FLAGS = "-Wall -Wextra -Wconversion -pedantic -Wshadow"

gcc-7:错误:无法识别的命令行选项'-m64'

【问题讨论】:

  • 看起来 Makefile 的内容比您在此处显示的要多?看起来除了-m64 之外还有一些东西在添加-Wfatal-errors -O0 -g。那里有更多的 Makefile 规则吗?

标签: c++ linux g++ arm64 gcc7


【解决方案1】:

错误:无法识别的命令行选项“-m64”

我相信您正在寻找-march=armv8-a(和朋友),而不是-m64。 GCC arm64 选项可在手册中的3.18.1 AArch64 Options 获得。

Aarch64 在基本规范中包含 ASIMD,因此不需要额外的旋转。 ASIMD 是“高级 SIMD 指令”,它是 ARM 在 Aarch32 和 Aarch64 架构上所称的 NEON。

如果您想启用扩展,例如 CRC 或 Crypto,则选项应类似于 -march=armv8.1-a+crc-march=armv8.1-a+crypto-march=armv8.1-a+crc+crypto


等效的 x86 选项如下。很明显,GCC的ARM移植版并没有使用与x86相同的型号。这让新用户感到困惑(或者让我感到困惑)。

  • -march=armv8-a-msse2
  • -march=armv8.1-a+crc-msse2 -msse4.1
  • -march=armv8.1-a+crypto-msse2 -mpclmul -maes
  • -march=armv8.1-a+crc+crypto-msse2 -msse4.1 -mpclmul -maes

ARM 指令集在加密中包含 SHA,因此 x86 选项可能应该包含 -msha。问题是,x86 SHA 直到无进位乘法和 AES 大约 8 年后才出现。

另外,GCC ARM 编译器通常不理解-march=native。在较旧的 GCC 编译器上,编译器只会崩溃。在中档 GCC 上,它被简单地忽略了。我相信最新的 GCC 编译器会尊重它。

【讨论】:

  • 感谢您的解释!我的问题是我没有将 -m64 放在任何地方,我需要在哪里配置 -march=armv8-a 才能使其工作?
  • 它们是编译器选项。编译器选项进入CPPFLAGSCFLAGSCXXFLAGS。我相信你会在 Cmake 中使用 C_COMPILE_FLAGSCXX_COMPILE_FLAGS
  • 我将它添加到标志中,但没有运气。是否有可能在其他地方进行了配置,或者它必须在代码中的某个地方?
猜你喜欢
  • 2020-10-06
  • 1970-01-01
  • 2018-12-28
  • 1970-01-01
  • 2013-05-26
  • 2021-10-04
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多