我正在编译一些在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所以它会使用任何可用的版本吗?
答案 0 :(得分:67)
不使用“-lcurl”而是使用“-l:libcurl.so.3” 当然也使用“-L _installed_path _”
答案 1 :(得分:27)
你可以在链接器命令行上传递实际的.so文件而不是-l文件,它应该做你想要的。
答案 2 :(得分:1)
如何创建链接到.3的项目本地符号链接,那么你可以在编译时使用-L。我不确定你是否会发生名称冲突,但为了以防万一,你总是可以称之为libcurl-old.so。
答案 3 :(得分:1)
我认为正确的方法是使用链接器的--filter
和--auxiliary
标志。
它们没有很好的文档记录,但应该允许您根据安装的机器从同一个库的不同版本加载符号。