如何编译 glibc(32 位和 64 位)?

How to you compile glibc (32-bit and 64-bit)?

提问人:Stryker2k2 提问时间:10/26/2021 更新时间:10/27/2021 访问量:548

问:

现在,我的项目中有一个开源依赖库(mylib.a文件)的修改版本,因此我通过gcc命令对其进行了静态链接。我收到错误...

"statically linked applications require at runtime the shared libraries from the glibc version used for linking"

我的翻译:我的静态依赖库不能动态使用 glibc;它还必须被编译和动态链接。因此,我正在尝试编译和静态链接 glibc。

我收集到它们需要编译,将 *.a 库放置在项目的文件夹中,为包含标头添加“-I//location//”,并为库本身添加“-L//location//”。

但是,对于问题本身......

如何编译 glibc(32 位和 64 位)?

通过开源研究,我找到了这个链接,并且克隆了存储库,但我找不到任何关于如何实际编译它的文档。

git clone git://sourceware.org/git/glibc.git

欢迎任何想法或建议。

Linux GCC 编译 静态库 glibc

评论

2赞 n. m. could be an AI 10/27/2021
不,你误解了警告。它说“你正在尝试将你的程序与glibc静态链接,请注意,它并没有像大多数人认为的那样工作”。因此,我正在尝试编译和静态链接 glibc。这是你绝对不应该做的事情。它会浪费你很多时间,对警告无能为力。干脆不要使用 .-static

答:

2赞 Employed Russian 10/27/2021 #1

我的翻译:我的静态依赖库不能动态使用 glibc;它还必须被编译和动态链接。因此,我正在尝试编译和静态链接 glibc。

正如 n.m. 指出的那样,你的翻译是错误的。

您正在尝试链接一个完全静态的可执行文件,并且 GLIBC 警告您,此类可执行文件将无法在任何安装了不同版本的 GLIBC 的计算机上正确运行。

与其尝试构建一个完全静态的可执行文件,不如构建它,使其使用(您仍然可以链接到这样的可执行文件)。libc.so.6mylib.a

如果您添加到链接的原因是您同时拥有 和 ,并且想链接前者而不是后者,请阅读此答案-staticlibmylib.alibmylib.so

评论

0赞 Stryker2k2 11/16/2021
几周前读完这篇评论后,我决定掉进编译和静态链接 glibc 的兔子洞;包括 glibc 的其他第三方分支。多亏了你的评论,我确实或多或少找到了一种方法,但最终决定动态链接。编译 glibc 会使我的可执行文件膨胀两倍。谢谢你帮我解决这个问题!<3