对于"原因",我需要构建一个不发出SIMD指令的x86工具链(尝试使用-march
还不够,因为glibc将包含为使用而构建的函数SIMD指令等。)。
我使用以下配置标志构建了自己的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 :(得分:0)
我确认我的gcc没有使用我的glibc。
为什么会这样?
您需要再次重建gcc
,添加--with-sysroot=/scratch/install
(以及可能的其他标记)。
一般来说,构建正确的 linux-to-linux交叉编译器非常棘手,你可能会发现使用crosstool-ng会为你节省大量的试验和错误。< / p>