首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gcc-7:错误:无法识别的命令行选项‘-m64’

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

Stack Overflow用户
提问于 2019-10-05 07:18:48
回答 1查看 10.9K关注 0票数 3

我试图在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

代码语言:javascript
复制
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)
代码语言:javascript
复制
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’

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-05 07:34:22

错误:无法识别命令行选项‘-m64’

我相信你要找的是-march=armv8-a (和朋友),而不是-m64。手册中的3.18.1 AArch64 Options上提供了有关GCC arm64的选项。

Aarch64在基本规范中包含了ASIMD,因此不需要额外的旋转。ASIMD是“高级单指令多指令集”,它是ARM在Aarch32和Aarch64体系结构上所称的霓虹灯。

如果你想启用扩展,比如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大约8年后,AES才出现。

此外,GCC ARM编译器通常不理解-march=native。在较早版本的GCC编译器上,编译器会崩溃。在中档的GCC身上,它被简单地忽略了。我相信最新的GCC编译器对此表示敬意。

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

https://stackoverflow.com/questions/58244095

复制
相关文章

相似问题

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