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

エラーを修正する方法: -march= スイッチと -mtune= スイッチの値 (ネイティブ) が正しくありませんか?

問題は-march=nartive. GCC のメーリング リストのIan Lance Taylor によると(Ian は GCC 開発者の 1 人です):

問題は、ドライバー コードが機能していないことと、gcc がその [ -march=native] を正しく処理しないことです。gcc には、ドライバー コードの失敗を処理するコードがいくつかあり、 では機能しますが、 では機能し-mtune=nativeません-march=native

ドライバーコードは、CPU用に変更する-march=nativeことになっ ています。-march=XXXコードは にあり gcc/config/i386/driver-i386.cます。

したがって、回避策は使用を避けること-march=nativeです。(1)-m32または-m64(2) のいずれかを使用-march=cpu-typeします。 は、GCC マニュアルの3.17.15 Intel 386 and AMD x86-64 Optionscpu-typeにリストされているものの 1 つです。リストは広範で、 、 、および が含まれます。pentiumpentium2pentium3pentium4

于 2015-07-31T10:07:43.667 に答える
1

gcc4.2 以上のバージョンを使用するように切り替えます。

gccのバージョン 4.2 でnativeマーチが導入されました。


使用する

gcc --version

gccのバージョン情報を取得します。

于 2012-12-17T18:32:52.137 に答える