查看 glibc 编译选项

查看 glibc 编译选项

我想找出安装 Linux 时使用哪些编译器/链接器选项来编译 GNU C 标准库 (glibc)。特别是,当我在另一台机器上从源代码编译 glibc 时,我希望获得与存档 libc.a 相同的结果(尽管 gcc、make、binutils 等版本相同)。

我所能找到的只是使用的 gcc 版本:

user@ubuntu:/$ /lib/x86_64-linux-gnu/libc.so.6 
GNU C Library (Ubuntu GLIBC 2.21-0ubuntu4) stable release version 2.21,
...
Compiled by GNU CC version 4.9.2.
...

但是,当从源代码编译 glibc 且没有其他选项时,运行 make 后我没有得到相同的结果。自编译的libc.a存档与预安装的存档不同(大小和二进制)。所以我想正在进行一些优化。可能是因为从源代码编译时包含了调试信息。

建造:

user@ubuntu:~/glibc$ sudo apt-get source libc6
user@ubuntu:~/glibc/glibc-build$ sudo ../glibc-2.21/configure --prefix=/home/user/glibc/glibc-install/
...
sudo make
...

在 debian/rules 文件和输出中我发现,-O2-g与 gcc 一起使用。

有一个现有的问题,我看过但没有帮助我。

我目前使用的是 Ubuntu 15.04,但我也需要在其他(非 debian)系统上使用它。此外,它还应该与 Ubuntu 14.04 上的 elibc 一起使用。


最终目标是重现(编译)不同系统上使用的 glibc 的每个版本(我知道有很多),并从中生成 IDA PRO FLIRT 签名。所以,总而言之,我至少需要相同的二进制输出libc.a(这是签名的文件)。进一步阅读 FLIRT 签名这里

这些签名的问题是,每个不同的编译器版本和每个编译器选项都可以更改库存档的输出并导致不同的签名,该签名仅部分适用于分析的二进制文件。

我对此很陌生,因此欢迎您提供任何帮助。我希望我没有忘记提及一些重要的事情。

答案1

您应该在与您的包匹配的 src.deb 包中找到重建所需的所有内容.deb。看着apt-src(8)

相关内容