我有以下问题:
使用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版本发生冲突。
任何反馈都是受欢迎的,无论是我提出的两种方法之一的解决方案,还是完全不同的方法。
答案 0 :(得分:0)
不要这样做:与普遍看法相反,完全静态二进制文件 less 可移植when using GLIBC,而不是更多。当您完全静态地链接二进制文件时,您可能会在链接时收到警告:我在考虑将Qt应用程序与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。