Linux 如何修复错误-march=switch和-mtune=switch的错误值(本机)?

Linux 如何修复错误-march=switch和-mtune=switch的错误值(本机)?,linux,gcc,compiler-errors,makefile,cmake,Linux,Gcc,Compiler Errors,Makefile,Cmake,我正在编译此处提供的库:,但是 这只是提供的说明中的第一步,我不知道下一步要看哪里。有人能告诉我这个错误到底是什么,以及如何修复它吗?切换到使用与4.2相同或更大版本的gcc gcc的4.2版引入了nativemarch 使用 获取gcc的版本信息 如何修复错误-march=switch和-mtune=switch的错误值(本机) 问题在于-march=nartive。根据Ian Lance Taylor on(Ian是GCC开发人员之一): 问题是驱动程序代码不起作用,而错误是 gcc不能正

我正在编译此处提供的库:,但是


这只是提供的说明中的第一步,我不知道下一步要看哪里。有人能告诉我这个错误到底是什么,以及如何修复它吗?

切换到使用与4.2相同或更大版本的
gcc

gcc
的4.2版引入了
native
march


使用

获取
gcc
的版本信息

如何修复错误-march=switch和-mtune=switch的错误值(本机)

问题在于
-march=nartive
。根据Ian Lance Taylor on(Ian是GCC开发人员之一):

问题是驱动程序代码不起作用,而错误是 gcc不能正确处理[
-march=native
]。gcc中有一些代码可以 处理失败的驱动程序代码,它适用于
-mtune=native
,但 不适用于
-march=native

驾驶员代码应将
-march=native
更改为
-march=XXX
用于您的CPU。密码在里面
gcc/config/i386/driver-i386.c


因此,解决方法是避免使用
-march=native
;并使用(1)
-m32
-m64
,或(2)使用
-march=cpu类型
,其中
cpu类型
是GCC手册中列出的类型之一。该列表非常广泛,包括
pentium
pentium2
pentium3
pentium4
gcc
的哪个版本可能会出现这种情况。@alk-gcc 4.1.x。由于CentOS 5,您仍然可以在野外体验到它。他无法在某些平台上切换编译器。例如,CentOS 5使用
gcc版本4.1.2 20080704(Red Hat 4.1.2-55)
。我所知道的下一个更糟糕的情况是OpenBSD和GCC4.2.1。OpenBSD是当代的,但其编译器在GCC4.2.1中被冻结。
bash-3.2$ PREFIX=/usr/local/ cmake . && make                                    
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
 -Wall -O2 -g3 -msse2 -march=native -fno-exceptions -fno-rtti
--- Prefix = /usr/local/
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/dir
[ 14%] Building CXX object CMakeFiles/fastann.dir/dist_l2.cpp.o
/path/to/dir/dist_l2.cpp:1: error: bad value (native) for -march= switch
/path/to/dir/dist_l2.cpp:1: error: bad value (native) for -mtune= switch
make[2]: *** [CMakeFiles/fastann.dir/dist_l2.cpp.o] Error 1
make[1]: *** [CMakeFiles/fastann.dir/all] Error 2
make: *** [all] Error 2
bash-3.2$
gcc --version