2016-04-22 5 views
0

"理由"については、SIMD命令を出さないx86ツールチェーンを構築する必要があります(-marchを使用しようとすると、glibcにSIMD命令などを使用するように組み込まれた関数が含まれているため十分ではありません)。gccにglibcの特定のインスタンスを使用するように指示するにはどうすればよいですか?

私は、次のconfigureフラグを使って自分のgcc 5.3を構築しています:

../src/gcc/configure --prefix=/scratch/install --enable-languages=c,c++ \ 
--with-cpu=ivybridge \ 
--with-arch=ivybridge \ 
CFLAGS="-march=ivybridge" \ 
CXXFLAGS="-march=ivybridge" 

私は、次のconfigureフラグを使って自分のglibcを構築しました:

../src/glibc/configure --prefix=/scratch/install --with-arch=ivybridge \ 
CC="/scratch/install/bin/gcc" \ 
CXX="/scratch/install/bin/g++" \ 
CFLAGS="-O2 -march=ivybridge" \ 
CXXFLAGS="-O2 -march=ivybridge -Wa,-march=corei7+nommx+nosse+noavx"` 

私はgccがされていないことを確認私のglibcを使って。

$ /scratch/install/bin/gcc -print-file-name=libc.so 
/usr/lib/x86_64-linux-gnu/libc.so 

質問:

私は、新たにコンパイルされたglibcにリンクするにはどうすればよいですか?私が助けるならば、-staticのバイナリをコンパイルすることだけに興味があります。

答えて

0

gccが自分のglibcを使用していないことを確認しました。

なぜでしょうか?

gccを再構築し、--with-sysroot=/scratch/install(おそらく他のフラグ)を追加する必要があります。一般的に

正しいのlinux-に-linuxのクロスコンパイラを構築することは、非常にトリッキーで、あなたはcrosstool-ngを使用すると、あなたの試行錯誤のかなりの節約になりますことがあります。

関連する問題