linux - 针对特定的 glibc ABI

标签 linux gcc glibc abi

我想在 Linux 上编译一个动态链接的可执行文件,我想以较旧的 glibc ABI 为目标,以确保它可以在尽可能多的 linux 计算机上运行。我知道对此的典型解决方案是使用 chroot 或虚拟机,安装旧工具链,并让工具链自然地针对旧 glibc ABI,但我想知道是否有办法明确告诉编译器“嘿,我希望您依赖版本 GLIBCXX_3.4.11”。

谢谢!

最佳答案

Hey, I want you to depend on version GLIBCXX_3.4.11

请注意,GLIBCXX 是关于 libstdc++ 的,不是 glibc

当您将程序链接到 libstdc++.so 并使用一些已更改的符号时,编译器(实际上是链接器)会记录所需的版本,例如 GLIBCXX_3.4.11在那个版本中。

避免这种情况的唯一方法是安排链接到不同版本的 libstdc++.so最容易通过 chroot< 实现,或者不使用相应的符号。所以不,你不能只说“我想要 GLIBCXX_3.4.11”。

关于linux - 针对特定的 glibc ABI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984149/

相关文章:

linux - Bash:无效的命令

c - 堆栈分配、填充和对齐

c++ - 运行 'make check' GLIBC 时出现链接问题

linux - 在子 shell 中运行的脚本不运行与调用脚本相同的 shell

linux - 在文件和终端中运行退出命令有什么区别

linux - Bash 脚本 - 从标准输入或文件获取输入

c++ - 链接 gcc 6、gcc 7 和 gcc 8 对象是否安全?

gcc - 使用较新的 gcc 调用 'lower_bound' 没有匹配函数

c++内存错误("double free or corruption")显式调用析构函数时

*scanf 中 %n 运算符的一致性和行为