Glibc - 使用Qt创建者静态构建或强制程序使用正确的版本

时间:2016-04-28 21:39:54

标签: linux qt-creator glibc

我有以下问题:

使用Qt Creator,我制作了一个Qt应用程序,需要运行Glibc_2.14。我现在需要在仅提供Glibc_2.11.3的机器上运行此应用程序。我在机器上没有root权限,所以我无法更新库。

如果我尝试运行该应用程序,我自然会收到以下错误消息:/lib/libc.so.6: version 'GLIBC_2.14' not found (required by ./obsluha)

我正在考虑将Qt应用程序与Glibc静态链接,但我如何在Qt创建者中执行此操作?请注意,我只需要静态链接Glibc,而不是Qt本身。

另一种可能的方法是简单地将libc.so.6的工作副本复制到机器上,并以某种方式强制应用程序使用该版本(我知道这不是一个好主意)。这被复制到我的主目录中,我的主目录导出到LD_LIBRARY_PATH当然会与其他libc版本发生冲突。

任何反馈都是受欢迎的,无论是我提出的两种方法之一的解决方案,还是完全不同的方法。

1 个答案:

答案 0 :(得分:0)

  

我在考虑将Qt应用程序与Glibc静态链接

不要这样做:与普遍看法相反,完全静态二进制文件 less 可移植when using GLIBC,而不是更多。当您完全静态地链接二进制文件时,您可能会在链接时收到警告:warning: Using 'getpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking。忽略该警告时,您的二进制文件极有可能崩溃。

  

但是如何在Qt创建者中执行此操作?

抱歉,我不知道答案。但这没有实际意义。

  

请注意,我只需要静态链接Glibc,而不是Qt本身。

不可能静态链接GLIBC,同时动态链接其他库。使用动态库暗示您正在使用动态加载器,并且暗示您正在动态链接到GLIBC。

那你能做什么?列出了一些可能的解决方案here