【问题标题】:Getting compilation error for libcurl获取 libcurl 的编译错误
【发布时间】:2012-03-16 22:46:49
【问题描述】:

我正在尝试使用 Openssl 和 SSH2(手动构建)编译 libcurl。这是我的配置命令:

./configure  --with-ssl=/home/yuvi/development/openssl --with-libssh2=/home/yuvi/development/ssh --enable-debug --prefix=/home/yuvi/development/curl CPPFLAGS="-I/home/yuvi/development/openssl/include -I/home/yuvi/development/ssh/include" LDFLAGS="-L/home/yuvi/development/openssl/lib -L/home/yuvi/development/ssh/lib" PKG_CONFIG_PATH=/home/yuvi/development/openssl/lib/pkgconfig:/home/yuvi/development/ssh/lib/pkgconfig LIBS="-lssl -lssh2 -lcrypto"

我在 libtool 阶段遇到以下错误:

libtool: link: gcc -shared  -fPIC -DPIC  .libs/file.o .libs/timeval.o .libs/base64.o .libs/hostip.o .libs/progress.o .libs/formdata.o .libs/cookie.o .libs/http.o .libs/sendf.o .libs/ftp.o .libs/url.o .libs/dict.o .libs/if2ip.o .libs/speedcheck.o .libs/ldap.o .libs/ssluse.o .libs/version.o .libs/getenv.o .libs/escape.o .libs/mprintf.o .libs/telnet.o .libs/netrc.o .libs/getinfo.o .libs/transfer.o .libs/strequal.o .libs/easy.o .libs/security.o .libs/krb4.o .libs/curl_fnmatch.o .libs/fileinfo.o .libs/ftplistparser.o .libs/wildcard.o .libs/krb5.o .libs/memdebug.o .libs/http_chunks.o .libs/strtok.o .libs/connect.o .libs/llist.o .libs/hash.o .libs/multi.o .libs/content_encoding.o .libs/share.o .libs/http_digest.o .libs/md4.o .libs/md5.o .libs/curl_rand.o .libs/http_negotiate.o .libs/inet_pton.o .libs/strtoofft.o .libs/strerror.o .libs/hostasyn.o .libs/hostip4.o .libs/hostip6.o .libs/hostsyn.o .libs/inet_ntop.o .libs/parsedate.o .libs/select.o .libs/gtls.o .libs/sslgen.o .libs/tftp.o .libs/splay.o .libs/strdup.o .libs/socks.o .libs/ssh.o .libs/nss.o .libs/qssl.o .libs/rawstr.o .libs/curl_addrinfo.o .libs/socks_gssapi.o .libs/socks_sspi.o .libs/curl_sspi.o .libs/slist.o .libs/nonblock.o .libs/curl_memrchr.o .libs/imap.o .libs/pop3.o .libs/smtp.o .libs/pingpong.o .libs/rtsp.o .libs/curl_threads.o .libs/warnless.o .libs/hmac.o .libs/polarssl.o .libs/curl_rtmp.o .libs/openldap.o .libs/curl_gethostname.o .libs/gopher.o .libs/axtls.o .libs/idn_win32.o .libs/http_negotiate_sspi.o .libs/cyassl.o .libs/http_proxy.o .libs/non-ascii.o .libs/asyn-ares.o .libs/asyn-thread.o .libs/curl_gssapi.o .libs/curl_ntlm.o .libs/curl_ntlm_wb.o .libs/curl_ntlm_core.o .libs/curl_ntlm_msgs.o   -Wl,-rpath -Wl,/home/yuvi/development/ssh/lib -Wl,-rpath -Wl,/home/yuvi/development/ssh/lib -L/home/yuvi/development/openssl/lib -L/home/yuvi/development/ssh/lib -lrt -lz -lssl /home/yuvi/development/ssh/lib/libssh2.so -lcrypto  -O0   -Wl,-soname -Wl,libcurl.so.4 -o .libs/libcurl.so.4.2.0
/usr/bin/ld: /home/yuvi/development/openssl/lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/home/yuvi/development/openssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libcurl.la] Error 1
make[2]: Leaving directory `/home/yuvi/development/curl-7.24.0/lib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/yuvi/development/curl-7.24.0/lib'
make: *** [all-recursive] Error 1

谁能帮帮我?我错过了什么?

【问题讨论】:

  • 我错过了什么……?你读过错误信息了吗?
  • @Justin :) 一些与链接器相关的问题,对吧?但无法理解,如何解决..
  • 第一个错误提示:“...用 -fPIC 重新编译”。其余的是第一个错误的影响。所以将-fPIC 添加到你的CPPFLAGS,重建,然后看看你登陆的地方。
  • @Justin 仍然遇到同样的错误,你的意思是在 CURL 的 CPPFLAGS 或 OPENSSL 的 CPPFLAGS 中添加 -fPIC,我如何确保它正在使用我编译的库而不是 /usr/lib

标签: c linux curl build libcurl


【解决方案1】:

你需要用 -fPIC 重新编译你的 /home/yuvi/development/openssl/lib/libssl.a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2017-10-12
    相关资源
    最近更新 更多