我有一个在 Ubuntu 16.04 中编译的应用程序,它依赖于许多库,如 Qt、boost 和许多其他库,以及该版本附带的版本。但是,我需要在运行 Ubuntu 12.04 的网络服务器中运行此应用程序,并且我没有 root 访问权限。
当我尝试运行该应用程序时,它抱怨库版本不同或不存在。
为了解决这个问题,我将 ldd 报告的每个库复制到一个文件夹,并尝试使用指向该文件夹的 LD_LIBRARY_PATH 运行应用程序,但应用程序收到了分段错误信号。
在 Ubuntu 12.04 中编译应用程序是不可能的,因为我使用的是旧版本库中不存在的功能。此外,我不打算在旧系统上构建新的库。
所以,我的问题是:如何在旧版本的 Ubuntu 上运行在新版本 Ubuntu 中编译的应用程序?
答案1
最简单的解决方案?
构建一个 Ubuntu 12 服务器,复制您运行应用程序所需的 Ubuntu 12 服务器,并在该服务器上编译一个版本。
因为你不可能涵盖所有内容 - 即使你得到了全部共享对象正确,内核接口可能会不同。