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

问题描述 投票:1回答:1

我正在尝试在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'

c++ linux g++ arm64 gcc7
1个回答
1
投票

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

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

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编译器很荣幸。

© www.soinside.com 2019 - 2024. All rights reserved.