操作系统自带的libcurl-dev是非常全的库,里面包含很多模块,支持很多协议,所以导致需要引用很多的动态链接库。
如下所示:
pp@dell:~/fuse$ ldd /usr/bin/curl
linux-vdso.so.1 (0x00007fff709d4000)
libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007faf04e4d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007faf04e31000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007faf04e0e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faf04c1c000)
libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007faf04bf2000)
libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007faf04bd1000)
librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007faf04baf000)
libssh.so.4 => /usr/lib/x86_64-linux-gnu/libssh.so.4 (0x00007faf04b40000)
libpsl.so.5 => /usr/lib/x86_64-linux-gnu/libpsl.so.5 (0x00007faf04b2d000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007faf04a9a000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007faf047c3000)
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007faf04776000)
libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007faf0471e000)
liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007faf0470d000)
libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007faf046ff000)
/lib64/ld-linux-x86-64.so.2 (0x00007faf04f3a000)
libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007faf0457d000)
libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007faf043a7000)
libhogweed.so.5 => /usr/lib/x86_64-linux-gnu/libhogweed.so.5 (0x00007faf0436e000)
libnettle.so.7 => /usr/lib/x86_64-linux-gnu/libnettle.so.7 (0x00007faf04334000)
libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007faf042b0000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007faf042aa000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007faf041cd000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007faf0419a000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007faf04193000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007faf04184000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007faf04168000)
libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007faf0414b000)
libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007faf04106000)
libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007faf040e3000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007faf03fab000)
libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007faf03f95000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007faf03f8e000)
libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007faf03f82000)
libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007faf03eef000)
libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007faf03e47000)
libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007faf03e0f000)
libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007faf03df6000)
libffi.so.7 => /usr/lib/x86_64-linux-gnu/libffi.so.7 (0x00007faf03dea000)
libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007faf03dc0000)
libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007faf03dac000)
libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007faf03d5e000)
libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007faf03c35000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007faf03bfa000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007faf03aab000)
如果我们的程序调用了libcurl库,也会用到许多的不需要的库。
在某些情况下,比如移植curl,可能我们需要一个干净的curl,不需要那么多的功能,不需要支持那么多的协议,就用下面的方法去掉一些不需要的功能。
下载代码就不说了。主要的步骤就是下面的。
./configure --disable-shared --enable-static --prefix=/tmp/curl \
--with-openssl=/home/pcl/fuse/s3fs-fuse/openssl \
--disable-ldap --disable-sspi --without-librtmp --disable-ftp \
--disable-file --disable-dict --disable-telnet --disable-tftp --disable-rtsp \
--disable-pop3 --disable-imap --disable-smtp --disable-gopher --disable-smb \
--without-libidn
make -j
make install