我正在使用libcurl
用于我的实用程序,并且它在所有Linux平台上都运行良好。我下载,解压缩,只是按照给出的说明没有任何更改。我的产品使用libcurl.so
文件并动态链接。 .so文件与我们的产品捆绑在一起。最近在Suse中出现了一些问题,我们发现默认情况下捆绑了Libcurl并且安装时存在冲突。
要避免此问题,我们尝试将libcurl.so
重命名为libother_curl.so
,但它无效,我的二进制文件仍然通过ldd显示libcurl.so作为依赖项。我从那时起就知道linux共享对象的ELF格式指定了标题中硬编码为SO文件名的文件名。(我可以用objdump -p
验证相同的内容)。
现在我的问题是最简单的方法是什么?如何使用其他名称构建libcurl?我的原始流程涉及使用以下开关运行configure
./configure --without-ssl --disable-ldap --disable-telnet --disable-POP3 --disable-IMAP --disable-RTSP --disable-SMTP --disable-TFTP --disable-dict --disable-gopher --disable-debug --enable-nonblocking --enable-thread --disable-cookies --disable-crypto-auth --disable-ipv6 --disable-proxy --enable-hidden-symbols --without-libidn --without-zlib
Make
然后从/lib/.libs
中选择生成的文件是否有可用的配置开关,我可以指定目标文件名?我可以改变任何特定的Makefile吗?
我尝试改变我认为可能是明显的位置,但要么无法生成libs,要么生成了相同的名称。
非常感谢任何帮助。
答案 0 :(得分:1)
我从卷曲论坛得到了答案(谢谢Dan)。基本上我们必须使用makefile.am作为起点来浏览文件列表并更改库名“libxxx_curl”。
$ find。 -name Makefile.am | xargs sed -i的/ libcurl(.la)/ libxxx_curl \ 1 / g' $ buildconf $配置 $化妆
答案 1 :(得分:0)
我很多商业应用程序将他们的特定库版本捆绑在非标准路径中,然后在启动脚本中调整环境变量LD_LIBRARY_PATH,以避免冲突。恕我直言,这比尝试更改目标名称更好。