【问题标题】:How do I tell gcc to use a specific instantiation of glibc?如何告诉 gcc 使用 glibc 的特定实例化?
【发布时间】:2016-08-15 18:58:58
【问题描述】:

出于“原因”,我需要构建一个不发出 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 二进制文件感兴趣。

【问题讨论】:

    标签: gcc glibc


    【解决方案1】:

    我确认我的 gcc 没有使用我的 glibc。

    为什么会这样?

    您需要再次重建gcc,添加--with-sysroot=/scratch/install(可能还有其他标志)。

    一般来说,构建正确 linux-to-linux 交叉编译器是相当棘手的,您可能会发现使用crosstool-ng 会为您节省不少试错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 2019-02-26
      相关资源
      最近更新 更多