gpt4 book ai didi

c++ - 如何在旧版本的 gcc 系统上动态链接到 libc.so.6、libstdc++.so.6 的本地拷贝

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:51 26 4
gpt4 key购买 nike

我的代码是用 c++2011 编写的,用 g++4.8 编译的。但是,我的系统管理员不会从 gcc/g++ 4.1 升级计算集群。我收到以下错误:

/lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./ManRegOptDes)/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.17' not found (required by ./ManRegOptDes)/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./ManRegOptDes)/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./ManRegOptDes)/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.13' not found (required by ./ManRegOptDes)/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./ManRegOptDes)/usr/lib64/libstdc++.so.6: version `CXXABI_1.3.3' not found (required by /lib/intel/tbb/lib/intel64/gcc4.4/libtbb.so.2)

是否可以将 gcc/g++ 4.8 版本的 libc.so.6、libstdc++.so.6 复制到集群上我的用户目录,以便我的程序动态链接到它们?如果是这样,我要设置哪个环境变量以便我的可执行文件可以动态链接到它们?

谢谢。

最佳答案

Can you copy these files?

是的。对象库是与其他任何文件一样的普通文件。当然,当系统管理员允许它们可用时,您最终会希望连接到官方库。

对象库有两种形式…….a(存档)和 .so(共享对象)如果您将它们都复制到同一个个人目录,gcc 链接器将默认选择 .so 而不是 .a。

if so, which environment variable(s) to i set [sic]

我认为您不必担心标准的 LIBRARY_PATH 或 PATH 条目,直到您需要交付,或者直到 lib64 变得“正式”可用。解开临时路径修改等是否比执行以下操作更难?

将你想要的库复制到你自己的目录中,也许

      /home/uname/my_lib64

成为

  • .../my_lib64/libc.so.6
  • .../my_lib64/libstdc++.so.6

添加

  • -L/home/uname/my_lib64

到你的“最终”编译命令,让 gcc-linker 知道它可以在哪里寻找库。

并添加

  • -lc
  • -lstdc++

“最终”编译命令让 gcc 编译器知道它应该找到哪些库名称并搜索未解析的符号。

抱歉,我无法在我的机器上测试它。如果您遇到问题,我似乎记得使用相对路径名(而不是绝对路径)到您的库所在的目录。当我看时,这似乎是我当时所做的,但这可能是使相对路径有用的其他目标。

我也这样做了,您可能希望将目标添加到您的 make 文件中,以确保您链接到的 .a 或 .so 是最新的 w.r.t 您在代码中#include 的头文件库。我的 makefile 只是调用一个 cp 将最新的库放入 my_lib64 中。当我的系统管理员与我的目标合作时,协调库和 header 更新是我希望他们做的事情之一。

最后...确保您#include 的头文件是正确的。要检查,请将 -H 添加到您的编译中,并仔细阅读每个构建中触发读取的文件名和路径。

我想这样做会比较麻烦,但您可以使用与系统管理员暴政类似的解决方法,并将最新版本的 header 复制到您自己的目录中。但现在你会比我想做的更努力一些。通常,当您安装更新版本的编译器时,它会附带相应的 header 和库。

祝你好运。

关于c++ - 如何在旧版本的 gcc 系统上动态链接到 libc.so.6、libstdc++.so.6 的本地拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21056646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com