Linux下编译并使用 curl 静态库

windows下面编译并使用 curl 静态库我就不说了, 很简单。。。。。。

linux下面 编译后生成了 libcurl.a 文件,

但是在程序中静态链接 这个 libcurl.a 文件, 会发生很多的链接错误, 如果是动态链接 libcurl.a 文件则不会发生什么问题。

/usr/lib/libcurl.a(ssluse.o): In function `Curl_ossl_init':
(.text+0xcd1): undefined reference to `SSL_library_init'

/usr/lib/libcurl.a(ssluse.o): In function `Curl_ossl_connect_common':
(.text+0x1ba9): undefined reference to `SSL_get1_session'

上面随便挑几个错误。。。

后来经过一番折腾, 突然恍悟, 只需要添加下面的链接, 问题即可解决啊

-lcrypto -lidn -lssl /usr/lib/libcurl.a

这样编译生成的 可执行程序里面用命令

ldd 文件名 执行后, 依赖库里面已经没有 libcurl.so.4 的依赖项了。。。。

如果你用上面的选项还是出现链接错误,比如下面这样的东东

ldap.c:(.text+0x91): undefined reference to `ldap_url_parse'

请你编译 curl库的时候 用下面的指令生成 makefile文件

./configure --disable-ldap --disable-ldaps ,

编译好后在链接即可。

你可能感兴趣的:(linux)