46

我正在编译一些在 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 以便它使用任何可用的版本?

4

4 回答 4

83

而不是使用“-lcurl”使用“-l:libcurl.so.3”当然也使用“-L _installed_pa​​th_”

于 2013-06-25T10:24:01.467 回答
30

您可以在链接器命令行上传递实际的 .so 文件而不是 -l ,它应该可以执行您想要的操作。

于 2009-05-06T04:47:10.740 回答
1

如何为您的项目创建一个链接到 .3 的本地符号链接,然后您可以在编译时使用 -L 。我不确定您是否会遇到名称冲突,但您始终可以将其称为 libcurl-old.so 以防万一。

于 2009-05-06T04:47:58.163 回答
1

我认为正确的方法是使用链接器的--filterand--auxiliary标志。

它们的文档记录不多,但应该允许您根据安装的机器从同一库的不同版本中加载符号。

于 2017-01-30T17:51:07.903 回答