linux下编译curl

操作系统自带的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Linux下使用curl进行交叉编译,首先需要安装相关的交叉编译工具链。根据目标平台选择适当的工具链,如ARM、MIPS等。然后,下载curl的源代码包并解压。 进入curl源码目录后,可以配置编译参数。使用./configure命令,通过指定交叉编译工具链的位置和参数,来进行交叉编译的配置。例如: ``` ./configure --host=交叉编译工具链的前缀 ``` 其中,"--host"参数后面跟的是经过交叉编译工具链前缀,如arm-linux-gnueabi、mips-linux-gnu等。这样配置之后,就可以使用交叉编译器来编译curl了。 配置完成后,运行make命令进行编译编译完成后,即生成了交叉编译后的curl可执行文件。 最后,将生成的可执行文件拷贝到目标平台上进行运行测试即可。 总结起来,通过安装交叉编译工具链、配置编译参数,以及使用make命令进行编译,就可以在Linux下完成curl的交叉编译。 ### 回答2: 在Linux系统下,交叉编译是指在一台主机上用特定工具链编译生成适用于另一种主机架构的可执行程序。对于curlLinux下的交叉编译,以下是一些步骤: 首先,我们需要设置交叉编译环境。这包括安装交叉编译工具链和交叉编译的目标架构的头文件与库。 然后,我们需要下载curl的源代码。可以从curl的官方网站下载最新版本的源代码。 接下来,我们需要根据交叉编译工具链的要求配置curl编译选项。这可能涉及到指定目标架构、链接选项、头文件和库的路径等。 然后,我们可以运行configure命令来生成适用于交叉编译环境的Makefile。configure命令会根据主机架构、编译选项等自动配置Makefile。 接着,我们可以运行make命令进行编译。make命令会根据Makefile中的指令来编译生成可执行程序。在编译过程中,可能会出现一些依赖问题需要解决,比如缺少某些库文件。 最后,我们可以运行make install命令将编译生成的可执行程序安装到目标机器中。 需要注意的是,根据交叉编译工具链和目标架构的不同,具体的交叉编译过程可能会有所差异。因此,在进行交叉编译前,建议阅读相关文档或参考其他资源,以便更好地理解和掌握交叉编译的步骤和注意事项。 ### 回答3: 在Linux下进行curl交叉编译,需要以下几个步骤: 1. 安装交叉编译工具链:首先需要在Linux系统中安装适合目标平台的交叉编译工具链。根据目标平台的不同,可以选择不同的工具链,例如gcc、g++等。 2. 下载curl源代码:从curl的官方网站上下载最新的curl源代码包,并解压到本地。 3. 配置交叉编译环境:打开终端,进入解压后的curl源代码目录下,执行以下命令: ``` export CC=交叉编译器路径 export CXX=交叉编译器路径 export AR=交叉编译器路径-ar export RANLIB=交叉编译器路径-ranlib export LD=交叉编译器路径-ld export STRIP=交叉编译器路径-strip export CPPFLAGS="-I交叉编译器路径/include" export LDFLAGS="-L交叉编译器路径/lib" ``` 替换上述命令中的“交叉编译器路径”为实际的交叉编译工具链路径。 4. 配置编译选项:执行以下命令配置编译选项: ``` ./configure --host=目标平台 --prefix=安装路径 ``` 其中,目标平台是指要将curl交叉编译到的目标硬件平台,安装路径是指将编译后的curl安装到的目录。根据实际的需求进行配置。 5. 编译和安装:执行以下命令开始编译和安装: ``` make make install ``` 编译过程可能需要一些时间,等待编译完成后,curl将被安装到指定的安装路径下。 通过以上步骤,我们可以在Linux下成功进行curl的交叉编译。在配置交叉编译环境时,需要注意交叉编译器的选择和路径的配置,确保编译工具链已正确安装,并设置正确的编译选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边闲人2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值