3

我正在编译这里提供的库: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$

这只是提供的说明中的第一步,我不知道下一步该往哪里看。有人可以告诉我这个错误到底是什么,以及如何解决它?

4

2 回答 2

1

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

gcc的 4.2 版本引入了native行军。


利用

gcc --version

获取gcc的版本信息。

于 2012-12-17T18:32:52.137 回答
1

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

问题出在-march=nartive. 根据GCC 邮件列表中的Ian Lance Taylor 的说法(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) use -march=cpu-type,其中cpu-type是GCC 手册的3.17.15 Intel 386 和 AMD x86-64 选项中列出的选项之一。该列表很广泛,包括pentium、和。pentium2pentium3pentium4

于 2015-07-31T10:07:43.667 回答