我遇到了一个奇怪的问题。我开发 Qt/C++ 应用程序。直到昨天,我的开发机器和目标机器都运行着 Ubuntu 20.04。
昨天,为了运行特定软件,我不得不将我的开发机器升级到 21.10。不幸的是,这破坏了我的可执行文件的兼容性:
./MyProject: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./MyProject)
./MyProject: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./MyProject)
./MyProject: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by ./MyProject)
我不能:
- 升级目标机器
- 降级我的开发机器
- 使用虚拟机(实际上,我可以,但我极力避免这样做)
所以我想知道我是否可以在我的 21.10 中安装 20.04 的系统库并告诉 QtCreator 使用这个或那组库,就像 Qt 版本一样。
答案1
升级单个应用程序带外从来都不是一个好主意,特别是关于glibc
。
对于构建工具最好的解决该问题的方法是使用 Docker 容器。
降级是一种选择,但需要全新安装,并且不建议升级到 21.10,因为 20.04 是实际得到良好支持的发行版,而 21.10 无论如何都接近 EoL
答案2
以临时版本为目标不切实际。
为了简化工作流程,您必须在开发和客户端计算机上使用长期支持版本。
目前最新的 LTS 是 20.04 LTS,正如您所知。
您也可以等到 2022 年 4 月,然后在两台机器上安装 22.04 LTS。这样您的应用程序就可以完美使用到 2027 年。