linux - 如何编译 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
欢迎任何想法或建议。
解决方案
我的翻译:我的静态依赖库不能动态使用glibc;它还必须被编译和动态链接。因此,我正在尝试编译和静态链接 glibc。
正如 nm 指出的那样,您的翻译是错误的。
您正在尝试链接一个完全静态的可执行文件,而 GLIBC 警告您,此类可执行文件将无法在安装了不同版本的 GLIBC 的任何机器上正确运行。
与其尝试构建完全静态的可执行文件,不如构建它以使其使用libc.so.6
(您仍然可以链接mylib.a
到此类可执行文件)。
如果您添加-static
到链接的原因是您同时拥有libmylib.a
and libmylib.so
,并且想要链接前者而不是后者,请阅读此答案。
推荐阅读
- javascript - 从 fetch 语句构建对象
- android - 当 App 被操作系统杀死时保存 WebView 状态
- npm - 如何下载 Artifactory NPM 模块的源代码?
- google-cloud-platform - GKE 自动驾驶仪的垂直/水平缩放
- java - Spring aop 不适用于以编程方式注册的 bean
- javascript - promise.then 不会被调用
- git - 分叉项目的最佳工作流程,它永远不会合并回原始项目,而是要获得更新?
- prolog - 如何在 prolog 跟踪期间查看变量的值?
- php - PHP8 fsockopen:尽管没有连接,但返回有效指针(Windows 不是 Mac/Linux)
- javascript - 组件中的多个 v-model