【发布时间】:2018-05-04 11:51:19
【问题描述】:
我使用双启动 Linux Mint 18.1 安装 Arch Linux。在我的大学里,我们安装了 lubuntu 16.04 和 Ubuntu 14.04。我还在 Arch Linux 中启用了测试存储库,所以我得到了更新的包,因此当我在 Arch 上编译任何 C++ 程序时,由于共享库的版本与 mint 中的不匹配,它不会在 Linux Mint 上运行。
就像 libMango.so.64 在拱门和 libMango.so.60 在薄荷。我该如何克服呢?
所以我问我如何使用较新的编译器和共享库编译任何 C/C++ 以在旧共享库中正常运行?就像我在 64 位机器上用 -m32 标志编译 32 位程序一样,旧共享库也有标志吗?
我使用的是 gcc 8.1。
【问题讨论】:
-
为什么不能将源代码转移到大学并在大学计算机上编译?
-
@BasileStarynkevitch 想法不错,但我不能依赖大学才能找到工作。
-
我不明白。您可以在家开发,并传输源代码。或者将您的源代码(假设它是免费软件)放在github 上并在多个地方进行开发。如果代码不是大学作业也不是免费软件,你可能不应该(并且可能不允许)在大学计算机上编译它(在大多数大学,你不能将他们的计算资源用于与你的大学教育无关的东西)
-
即使是相对简单的库,交叉编译也很困难:stackoverflow.com/q/4032373/8120642
-
您可以使用构建容器(例如 docker 在任何其他上)与您的同事使用的确切库版本,或者甚至在您和您同事的计算机上的同一个容器上运行您的项目(如果他赢了)不介意安装其他软件)
标签: c++ linux shared-libraries dynamic-linking archlinux