gcc-7: error: unrecognized command line option ‘-m64’
error: unrecognized command line option ‘-m64’
I believe you are looking for -march=armv8-a
(and friends), and not -m64
. The GCC arm64 options are available at 3.18.1 AArch64 Options in the manual.
Aarch64 includes ASIMD in the base specification, so there are no extra gyrations needed for it. ASIMD is "Advanced SIMD instructions", and it is what ARM calls NEON on the Aarch32 and Aarch64 architectures.
If you want to enable extensions, like CRC or Crypto, then the option would look like -march=armv8.1-a+crc
or -march=armv8.1-a+crypto
or -march=armv8.1-a+crc+crypto
.
The equivalent x86 options would be the following. Obviously, the ARM port of GCC does not use the same model as x86. It is confusing for new users (or it was confusing for me).
-
-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 instruction set includes SHA in crypto, so the x86 options should probably include -msha
. The problem is, x86 SHA did not arrive until about 8 years after carryless multiplies and AES.
Also, GCC ARM compilers usually don't understand -march=native
. On older GCC compilers, the compiler will just crash. On mid-ranged GCC it is simply ignored. I believe the latest GCC compilers honor it.
Related videos on Youtube

Jen
Updated on June 04, 2022Comments
-
Jen 7 months
I'm trying to compile C code on a Jetson Nano and I get this error during compiling. I tried removing any occurrence of 'm -64' but it seems like its added automatically. This is the cmd where it fails:
/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: error: unrecognized command line option ‘-m64’
-
Jen about 3 yearsthanks for your explanation! my problem is that i didn't put -m64 anywhere, where would I need to configure -march=armv8-a to make it work?
-
jww about 3 yearsThey are compiler options. Compiler options go in
CPPFLAGS
,CFLAGS
andCXXFLAGS
. I believe you would useC_COMPILE_FLAGS
andCXX_COMPILE_FLAGS
for Cmake. -
Jen about 3 yearsI added it to the flags but no luck. Is there any possibility that it's configured somewhere else or would it have to be in the code somewhere?