Jen*_*Jen 3 c++ linux g++ arm64 gcc7
我正在尝试在 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)
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
gcc-7:错误:无法识别的命令行选项“-m64”
错误:无法识别的命令行选项“-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 -maesARM 指令集在加密中包含 SHA,因此 x86 选项可能应该包含-msha. 问题是,x86 SHA 直到在无载乘法和 AES 之后大约 8 年才出现。
此外,GCC ARM 编译器通常不理解-march=native. 在较旧的 GCC 编译器上,编译器只会崩溃。在中档 GCC 中,它被简单地忽略。我相信最新的 GCC 编译器会尊重它。
| 归档时间: |
|
| 查看次数: |
9275 次 |
| 最近记录: |