如何使用额外的库在 linux 上创建可移植的 C/C++ 程序?

How to create a portable C/C++ program on linux using additional libraries?

我需要创建一个可移植的 linux 程序,该程序使用从 yum (CentOS) 定义的大量附加库。

禁止在便携机上安装新包。那里没有必要的库。

如何通过 gcc 编译器 assemble 我的程序和所有包到一个文件夹中?当我将此文件夹移动到另一台机器时,我的程序应该启动并且 运行 成功。

我的程序只允许使用动态库。严格禁止静态库。

当尝试用存储在我的目录中的库将 rpath 替换为 /usr/lib64/ 时,转移到另一台机器后,其他库会出错(glibc 版本冲突)。

这听起来像是一个注定失败的项目,对于任何事情 non-trivial。

静态库不是问题。由于它们只是 .o 文件的集合,您可以 unpack 它们。然后您可以声明您刚刚链接了目标文件。愚蠢的规则会产生愚蠢的结果。

虽然我在这里忽略了软件许可,但问题似乎暗示了这一点。您不需要通过 yum 安装的库的许可证,因为您没有运送它们。但是,当您以一种或另一种形式将这些库作为产品的一部分运送时,您绝对需要许可证。考虑到愚蠢的规则,(L)GPL 可能是不可能的,因此您需要为所有 7 个库获取商业许可。