【发布时间】:2010-10-24 02:31:18
【问题描述】:
我正在编译一些在 Debian Linux 系统上使用 libcurl 的代码。我的开发机器正在运行 Debian 5,但我希望二进制文件也可以在旧的 Debian 4 系统上使用。
我发现如果我指定 -lcurl 它将链接到 libcurl.so.4 但 Debian 4 系统只有 libcurl.so.3
有什么方法可以告诉 GCC 链接到 libcurl.so.3(在 Debian 4 和 5 中都存在)或 libcurl.so,以便它使用任何可用的版本?
【问题讨论】:
-
在旧的 Debian 上, libcurl.so 不是 libcurl.so.3 的符号链接吗?我的意思是,默认情况下 -lcurl 并不正确,这看起来很奇怪。
-
kastauyra:版本不兼容,或者至少不能假定为二进制兼容。因此,当您链接它时,它会在二进制文件中记录链接的主要版本:如果您在较新的系统上编译,它将需要版本 4,而不能在旧系统上工作。 (实际上它记录的是soname,它是存储在库文件中的字符串,通常但不一定是“libcurl.so.3”)