2016-04-22 63 views
0

對於「理由」,我需要建立一個x86工具鏈不排放SIMD指令(嘗試使用-march是不夠的,因爲glibc就包括在建造時使用SIMD指令等功能)。如何告訴gcc使用glibc的特定實例?

我建立我自己的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" 

然後我建立了自己的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將節省你不少的試驗和錯誤。

相關問題