参考博客:这里写链接内容
###一, 平台的安装
####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
./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
下载curl库
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
#include
int main() {
printf("%s\n", curl_version());
return 0;
}
编译
gcc -o CURL CURL.c -L/usr/local/curl/lib -lcurl -I/usr/local/curl/include
file CURL
注意我这里不需要其它功能不需要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 的依赖项了。。。。
[c-sharp] view plaincopy
[root@localhost rtspProxy]# ldd proxy_D
linux-gate.so.1 => (0x00bd5000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00cb7000)
libpthread.so.0 => /lib/libpthread.so.0 (0x009da000)
libcrypto.so.6 => /lib/libcrypto.so.6 (0x00243000)
libidn.so.11 => /usr/lib/libidn.so.11 (0x0061a000)
libssl.so.6 => /lib/libssl.so.6 (0x007b0000)
libm.so.6 => /lib/libm.so.6 (0x009ab000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00b37000)
libc.so.6 => /lib/libc.so.6 (0x00863000)
libdl.so.2 => /lib/libdl.so.2 (0x009d4000)
libz.so.1 => /usr/lib/libz.so.1 (0x009f3000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x003a0000)
/lib/ld-linux.so.2 (0x00841000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00411000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x00df1000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x004be000)
libresolv.so.2 => /lib/libresolv.so.2 (0x0022e000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x004b3000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x0039b000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00101000)
libsepol.so.1 => /lib/libsepol.so.1 (0x00da4000)
如果你用上面的选项还是出现链接错误,比如下面这样的东东
ldap.c:(.text+0x91): undefined reference to `ldap_url_parse’
请你编译 curl库的时候 用下面的指令生成 makefile文件
./configure –disable-ldap –disable-ldaps ,
编译好后在链接即可。
libcurl API的官方文档 http://curl.haxx.se/libcurl/c/