curl: (2) 初始化失败

use*_*152 5 linux curl

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

./configure  
make  
make install
Run Code Online (Sandbox Code Playgroud)

如果我运行,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  
Run Code Online (Sandbox Code Playgroud)

我相信这与我的配置有关。

Pet*_*esh 5

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

要验证是否是这种情况,您应该执行以下操作:

ldd /usr/local/bin/curl
Run Code Online (Sandbox Code Playgroud)

如果它指示如下一行:

libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fea7e889000)
Run Code Online (Sandbox Code Playgroud)

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

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

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