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

时间:2012-12-17 08:06:10

标签: linux gcc compiler-errors makefile cmake

我正在编译此处提供的库:http://www.robots.ox.ac.uk/~vgg/software/fastann/,但

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$

这只是所提供指令的第一步,我不知道接下来要去哪里看。有人可以告诉我这个错误究竟是什么,以及如何解决它?

2 个答案:

答案 0 :(得分:1)

切换到使用等于或大于4.2的gcc版本。

gcc的4.2版引入了native游行。


使用

gcc --version

获取gcc的版本信息。

答案 1 :(得分:1)

  

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

问题在于rake aborted! cannot load such file -- bundler/setup /var/lib/openshift/55bb37e82d5271756a00006c/app-root/runtime/repo/config/boot.rb:3:in `<top (required)>' /var/lib/openshift/55bb37e82d5271756a00006c/app-root/runtime/repo/config/application.rb:1:in `<top (required)>' /var/lib/openshift/55bb37e82d5271756a00006c/app-root/runtime/repo/Rakefile:4:in `<top (required)>' (See full trace by running task with --trace) 。根据Ian Lance Taylor的GCC's mailing list(Ian是GCC开发者之一):

  

问题是驱动程序代码无法运行,而且错误是   gcc没有正确处理[-march=nartive]。 gcc中有一些代码   处理驱动程序代码失败,它适用于-march=native,但是   不适用于-mtune=native

     

驱动程序代码应该将-march=native更改为   你的CPU -march=native。代码在   -march=XXX

所以解决方法是避免使用gcc/config/i386/driver-i386.c;并使用(1)-march=native-m32,或(2)使用-m64,其中-march=cpu-type是GCC 3.17.15 Intel 386 and AMD x86-64 Options列出的其中一个手册。该列表非常广泛,包括cpu-typepentiumpentium2pentium3