部署静态链接的Qt应用程序向后兼容性

时间:2016-04-13 17:37:00

标签: qt ubuntu gcc

这是我第一次尝试在不同系统上运行Qt应用程序。

我选择了静态链接方法。我已经编译了Qt 5.5的源代码并使用静态Qt编译了我的应用程序。可执行文件在我的计算机上运行正常。 我的操作系统是Ubuntu 15.04。但是当我试图在Ubuntu 14.04上运行相同的可执行文件时,我遇到了麻烦。下面给出了错误消息的关键细节。

  

libstdc ++。so.6 cxxabi_1.3.8未找到

我做了一个标准的谷歌搜索并意识到这是因为我的机器上有一个更新版本的机器,我创建了可执行文件的机器。有很多不同的方法来处理这个问题。我看到的解决方案之一涉及使用可执行文件运送您自己的libstdc++.so副本。但是当我尝试将.so文件复制到笔式驱动器时,有一个警告说文件系统不支持这样的文件。

我的问题是,我做错了什么?此外,如果我想制作可执行目标Ubuntu 10.04,处理向后兼容性问题的正确程序是什么。我知道一种方法是在我的机器上安装相同的操作系统,然后创建可执行文件,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

libstd ++是向后兼容的,但不是向前兼容的,这意味着您可以使用比编译它更新版本的libstdc ++运行程序,但反之亦然。这就是你所经历的。

解决此问题的一种方法是使用较旧的OS版本作为构建计算机。例如,当您使用Ubuntu 14.04 LTS时,您将获得this list of compatible target systems

您正在使用的构建系统可能会限制可用的编译器。在Ubuntu 14.04上你得到了GCC 4.8,这对大多数C ++ 11都有用,并且clang 3.6的包可用,这将为你提供完整的C ++ 14支持。

如果您不想使用石器时代编译器,那么定位Ubuntu 10.04将具有挑战性。

运送libstdc ++的想法对你没什么帮助,因为你会遇到与libc相同的问题。