我正在 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 ,这样它将使用任何可用的版本?

有帮助吗?

解决方案

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

其他提示

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

如何创建链接到.3的项目本地符号链接,那么你可以在编译时使用-L。我不确定你是否会发生名称冲突,但为了以防万一,你总是可以称之为libcurl-old.so。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top