gpt4 book ai didi

ubuntu - libtool 在链接期间将 -lcurl 更改为 libcurl.so

转载 作者:行者123 更新时间:2023-12-04 19:20:36 24 4
gpt4 key购买 nike

我最近尝试在 Ubuntu 13.10 上编译一个基于 autotools 的库项目。它适用于过去的版本,但现在当它尝试链接我的测试工具时,libtool 正在将 -lcurl 更改为/usr/lib/x86_64-linux-gnu/libcurl.so。为什么要这样做?如果我从 app_LDADD 中手动删除 $(CURL_LIBS) 并替换为 -lcurl,它会正确链接。

配置.ac:

PKG_CHECK_MODULES(CURL, libcurl >= 7.20)

测试/Makefile.am:
check_mylib_LDADD = ../lib/libmylib.la \
$(top_srcdir)/dep/childproj/lib/libchildprj.la $(CURL_LIBS) $(XML_LIBS) \
$(SSL_LIBS)

make 的输出。请注意 -lcurl 如何扩展为 .so 文件。
/bin/bash ../libtool  --tag=CC   --mode=link gcc -I/usr/include/libxml2 \
-I../dep/childproj/lib -I./../lib -I../dep/childproj/lib -g -O2 \
-Wall -Werror -o check_mylib check_mylib-seatest.o check_mylib-test.o \
check_mylib-test_mylib.o check_mylib-test_xmlbind.o ../lib/libmylib.la \
../dep/childproj/lib/libchildproj.la -lcurl -lxml2 -lssl -lcrypto

libtool: link: gcc -I/usr/include/libxml2 -I../dep/childproj/lib \
-I./../lib -I../dep/childproj/lib -g -O2 -Wall -Werror -o .libs/check_mylib \
check_mylib-seatest.o check_mylib-test.o check_mylib-test_mylib.o \
check_mylib-test_xmlbind.o ../lib/.libs/libmylib.so \
../dep/childproj/lib/.libs/libchildproj.so \
/usr/lib/x86_64-linux-gnu/libcurl.so -lxml2 -lssl -lcrypto -pthread

../dep/childproj/lib/.libs/libchildproj.so: undefined reference to `curl_easy_perform'
<more undefined reference errors>

最佳答案

根据错误信息,libchildproj.so需要链接到libcurl . libchildproj.so链接如下:

/bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -Werror \
-version-info 0:0:0 -o libchildproj.la -rpath /usr/local/lib \
object.lo rest_client.lo -L/usr/lib/x86_64-linux-gnu -lcurl

libtool: link: gcc -shared -fPIC -DPIC .libs/object.o .libs/rest_client.o \
-L/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libchildproj.so -O2 \
-pthread -Wl,-soname -Wl,libchildproj.so.0 -o .libs/libchildproj.so.0.0.0

所以在实际的链接步骤(最后一个) -lcurl不存在,也没有链接到 libchildproj.so .添加 $(CURL_LIBS)libchildproj_la_LDADD修复了链接错误。

关于ubuntu - libtool 在链接期间将 -lcurl 更改为 libcurl.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21289685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com