【问题标题】:How to build libcurl.so with a different target name?如何使用不同的目标名称构建 libcurl.so?
【发布时间】:2010-11-02 15:24:51
【问题描述】:

我将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 吗?

我尝试更改我认为可能很明显的位置,但要么无法生成库,要么使用相同的名称生成。

非常感谢任何帮助。

【问题讨论】:

  • 我也在 curl 论坛上提交了这个。

标签: linux libcurl


【解决方案1】:

我从 curl 论坛得到了答案(感谢 Dan)。基本上我们必须使用 makefile.am 作为起点来遍历文件列表并更改库名称“libxxx_curl”。

$查找。 -name Makefile.am |xargs sed -i 's/libcurl(.la)/libxxx_curl\1/g' $buildconf $配置 $制作

【讨论】:

    【解决方案2】:

    我有很多商业应用程序将它们的特定库版本捆绑在非标准路径中,然后在启动脚本中调整环境变量 LD_LIBRARY_PATH 以避免冲突。恕我直言,这比尝试更改目标名称要好。

    【讨论】:

    • 一些本地限制阻止我们在这个时间点走这条路。这是长期存在的。谢谢。
    猜你喜欢
    • 2018-03-16
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多