首页 > 解决方案 > 如何编译 glibc(32 位和 64 位)?

问题描述

现在,我的项目中有一个开源依赖库(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 位)?

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

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

欢迎任何想法或建议。

标签: linuxgcccompilationstatic-librariesglibc

解决方案


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

正如 nm 指出的那样,您的翻译是错误的。

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

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

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


推荐阅读