【问题标题】:curl: (2) Failed Initializationcurl:(2)初始化失败
【发布时间】:2013-12-02 15:06:26
【问题描述】:

我已经在 Linux 上安装了 libcurl 7.33.0。我使用以下命令进行安装:

./configure  
make  
make install

如果我运行curl http://www.google.com,我会收到以下错误: curl: (2) 初始化失败

curl 安装在 /usr/local/bin,头文件安装在 /usr/local/include/curl。

卷曲配置:

sandesh@ubuntu:~$ curl-config --features  
IPv6  
libz  
sandesh@ubuntu:~$ curl-config --protocols  
DICT  
FILE  
FTP  
GOPHER    
HTTP  
IMAP  
POP3  
RTSP  
SMTP  
TELNET  
TFTP  
sandesh@ubuntu:~$ curl-config --ca  
/etc/ssl/certs/ca-certificates.crt  
sandesh@ubuntu:~$ curl-config --cflags  
-I/usr/local/include  
sandesh@ubuntu:~$ curl-config --configure  

sandesh@ubuntu:~$ curl-config --libs  
-L/usr/local/lib -lcurl  
sandesh@ubuntu:~$ curl-config --static-libs  
/usr/local/lib/libcurl.a -lz -lrt  

我认为这与我的配置有关。

【问题讨论】:

    标签: linux curl


    【解决方案1】:

    猜测一下,您已将 /usr/local/bin/curl 二进制文件链接到系统 curl 库。

    要验证是否是这种情况,您应该这样做:

    ldd /usr/local/bin/curl
    

    如果它表示这样的一行:

    libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fea7e889000)
    

    这意味着 curl 二进制文件正在获取系统 curl 库。虽然它在编译时链接到了正确的库,但在运行时它选择了不正确的库,这似乎是发生此错误的一个非常典型的原因。

    如果您使用--disable-shared 运行配置,那么它将产生一个.a,当链接到curl 二进制文件时,它将不依赖于系统libcurl.so,而是拥有它自己的私有代码。

    如果你是交叉编译,那么你还需要交叉编译所有依赖库,这是另一个问题。

    【讨论】:

    • 感谢您的反馈。我在运行 ldd /usr/local/bin/curl 时得到以下信息:libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb808e000)
    • 我使用 --disable-shared 选项编译,现在工作正常。如果目标系统没有系统 curl 库,那么带有共享库的 curl 应该可以正常工作吗?
    • 是的,如果目标系统上没有 curl 共享库,那么它应该通过你的安装过程来选择安装在 /usr/local/lib 中的库。
    【解决方案2】:

    据我所知,Ubuntu 默认包含curl。因此,如果您不需要专门的 7.33.0 版本,请清除它并从存储库中重新安装。

    #remove everything you had with curl
    sudo apt-get purge curl
    #optional update
    sudo apt-get update && sudo apt-get upgrade
    #install it from repository
    sudo apt-get install curl 
    

    【讨论】:

    • 评论如果你需要那个确切的版本,我会在这种情况下删除我的帖子。否则,让我知道它是否开始为您工作;)
    • 我想在我的 linux 机器上编译和安装 curl,因为在后期我想使用相同的源代码来编译 arm-linux arch。
    • 如果你能帮助我解决这个问题会很有帮助。
    • 你没有这么说。这是针对您当前正在运行的 Ubuntu 的建议。尝试在superuser.com 上问这个问题,或者让模组把它移到那里。干杯!
    猜你喜欢
    • 2021-01-10
    • 2017-03-06
    • 1970-01-01
    • 2016-03-25
    • 2012-11-17
    • 2017-12-10
    • 2018-09-17
    • 1970-01-01
    • 2018-10-13
    相关资源
    最近更新 更多