我正在编译一些在 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 以便它使用任何可用的版本?
而不是使用“-lcurl”使用“-l:libcurl.so.3”当然也使用“-L _installed_path_”
您可以在链接器命令行上传递实际的 .so 文件而不是 -l ,它应该可以执行您想要的操作。
如何为您的项目创建一个链接到 .3 的本地符号链接,然后您可以在编译时使用 -L 。我不确定您是否会遇到名称冲突,但您始终可以将其称为 libcurl-old.so 以防万一。
我认为正确的方法是使用链接器的--filter
and--auxiliary
标志。
它们的文档记录不多,但应该允许您根据安装的机器从同一库的不同版本中加载符号。