创建.so时绑定动态库

bind dynamic library when creating .so

我想用我自己的一些函数在 linux 上创建一个动态库 hello.so。使用ldd,它需要一些系统库,比如libstdc++.so。

我想知道是否可以修复此 hello.so 在我的计算机中创建 hello.so 时始终绑定到 libstdc++.so 的问题。因此,我可以将 hello.so 和 libstdc++.so 发送给其他人。

此致, 冯

当您制作用于分发的程序或库时 对动态库的依赖(共享库,类 unix 操作系统; Windows 上的 DLL)您理所当然地接受它在任何 计算机受到这些运行时的相同或兼容版本可用性的限制 依赖项,即你只能分发到一个生态系统 兼容主机。那是 linux、Windows、MacOS 的基础, android、iOS 生态系统,在其上运行良好。

是否要分发没有动态库的软件 最大限度地提高其兼容性的依赖性(甚至超越 通常需要什么)那么你必须构建它 static linkage,这样 二进制本身包含它需要执行的所有代码。去做 这成功你必须已经在你的系统上安装了静态版本 您将使用的所有库(例如 libstdc++) 默认情况下 link 随您的工具链提供的动态版本。

除非您有一些特定的有根据的要求来交付静态 linked产品,不用担心这个。