如何在使用旧版本 gcc 的系统上动态链接到 libc.so.6、libstdc++.so.6 的本地副本

2024-04-12

我的代码是用 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 复制到集群上的用户目录,以便我的程序动态链接到它们?如果是这样,我要设置哪个环境变量以便我的可执行文件可以动态链接到它们?

thanks.


你能复制这些文件吗?

是的。 对象库是像其他文件一样的普通文件。 当然,当系统管理员允许使用官方库时,您最终会想要连接它们。

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

如果是这样,我设置哪个环境变量[原文如此]

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

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

      /home/uname/my_lib64

变得

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

Add

  • -L/home/uname/my_lib64

到你的“最终”编译命令,让 gcc 链接器知道它可以在哪里查找库。

并添加

  • -lc
  • -lstdc++

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

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

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

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

我想这样做会更混乱,但是您可以使用与 sys-admin 暴政类似的解决方法,并将最新版本标头复制到您自己的目录中。但现在你会比我想要的更努力一些。通常,当您安装较新版本的编译器时,它会附带相应的标头和库。

祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在使用旧版本 gcc 的系统上动态链接到 libc.so.6、libstdc++.so.6 的本地副本 的相关文章

  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12

随机推荐