#x86
./configure --disable-shared --enable-static --disable-ftp --disable-ipv6 --disable-rtsp --disable-tftp --disable-telnet --disable-largefile --disable-smtp --disable-imap --without-ssl --without-libssh2 --without-zlib --without-librtmp --without-libidn --without-gnutls --disable-ldap --disable-ldaps --disable-pop3 --prefix=/qy_work/a3518_v080_develop/hi_test/curl/joseph_lib/x86
#arm
./configure --host=arm-linux CC=arm-hisiv100nptl-linux-gcc --disable-shared --enable-static --disable-ftp --disable-ipv6 --disable-rtsp --disable-tftp --disable-telnet --disable-largefile --disable-smtp --disable-imap --without-ssl --without-libssh2 --without-zlib --without-librtmp --without-libidn --without-gnutls --disable-ldap --disable-ldaps --disable-pop3 --prefix=/qy_work/a3518_v080_develop/hi_test/curl/joseph_lib/arm
> wget http://curl.haxx.se/download/curl-7.29.0.tar.gz
> tar zxvf curl-7.29.0.tar.gz
> cd curl-7.29.0
> ./configure --prefix=/usr/local/curl --disable-shared --enable-static --without-libidn --without-ssl --without-librtmp --without-gnutls --without-nss --without-libssh2 --without-zlib --without-winidn --disable-rtsp --disable-ldap --disable-ldaps --disable-ipv6
> make
> sudo make install
> vi a.c
#include <curl/curl.h>
int main() {
printf("%s\n", curl_version());
return 0;
}
> curl-config --static-libs
/usr/local/curl/lib/libcurl.a -lrt
> gcc a.c -static $(/usr/local/curl/bin/curl-config --static-libs --cflags)
> file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=0x251f05855bb8e2e633171019d5e6c4bcc3d80a80, not stripped
> ./a.out
libcurl/7.29.0
注意我这里不需要其它功能不需要ssl等,这里全disable掉,不然会在连接时报错:
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