如何链接到GCC中的特定版本的共享库

时间:2009-05-06 04:44:49

标签: linux gcc linker debian

我正在编译一些在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 个答案:

答案 0 :(得分:67)

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

答案 1 :(得分:27)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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