curl编译,Windows/Ubuntu

本文提供了一步一步指导如何在Windows和Ubuntu系统下编译Curl,包括依赖库(如OpenSSL和zlib)的安装与配置,以及编译过程中的关键命令和步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows下

 

0. 如果需要openssl、zlib,则在编译curl之前,先要编译openssl和zlib,且三份源代码应放在同一级目录

1. 下载安装包curl-7.33.0.zip (最新版本curl-7.36.0.zip,无法发邮件,别的新版本不清楚)

2. 解压缩到curl-7.33.0目录下

3. 打开VS的命令提示,比如我打开的:"D:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts\VS2013 开发人员命令提示.exe"

4. cd到目录curl-7.33.0\lib

5. 打开vsvars32.bat,我这里的命令为:"D:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat"

6. 命令:set CFG=release-dll-ssl-dll-zlib-dll
    如果不需要openssl、zlib,则命令为:set CFG=release-dll,并且,步骤7和8不执行

7. 命令:set OPENSSL_PATH=../../openssl-1.0.1g

8. 命令:set ZLIB_PATH=../../zlib-1.2.8

9. 命令:nmake -f Makefile.vc10

10. 提取需要的文件:
      目录include下:连同curl做为头文件目录(只需保留.h文件)
      目录lib下:libcurl_imp.lib,libcurl.dll 为所需库文件


ubuntu下


0. 如果需要openssl、zlib,则在编译curl之前,先要编译和安装openssl和zlib

1. 下载安装包curl-7.33.0.zip (最新版本curl-7.36.0.zip,无法发邮件,别的新版本不清楚)

2. 解压缩到curl-7.33.0目录下

3. 打开终端

4. cd到目录curl-7.33.0

5. 命令(我的openssl安装在/usr/local/ssl/):env PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure --with-ssl
    如果不需要openssl,则命令为:./configure --without-ssl

6. 命令:make

7. 会在最后链接的时候失败,原因是链接时没加上openssl的动态库,
    拷贝下链接时的命令:gcc ....(这里省略不写) ... -lz -lrt

8. cd 到 src目录,手动链接
    命令:gcc ....(这里省略不写) ... -lz -lrt -lcrypto -lssl
    其中,-lcrypto -lssl 是我们需要加的

9. 提取需要的文件:
    目录include下:连同curl做为头文件目录(只需保留.h文件)
    目录lib/.libs/下:libcurl.a,libcurl.so.4.3.0 为所需库文件 (libcurl.so.4,libcurl.so都是软连接)

10. 提醒:如果要安装(不能make install了),可以将include下的curl目录拷贝到/usr/local/include下,上面的那些库文件拷贝到/usr/local/lib下
 

 

参考文章:http://dewei.iteye.com/blog/1590979

参考文章:http://blog.sina.com.cn/s/blog_4ba5b45e0102e8d2.html

参考文档:curl-7.33.0/docs/INSTALL

 

### 解决 Ubuntu编译 curl 时 LIBS 相关问题的方法 在 Ubuntu编译 `curl` 需要确保安装了必要的依赖库并正确配置环境变量。如果遇到与 `LIBS` 相关的问题,通常是因为缺少某些开发库或链接器无法找到所需的静态/动态库文件。 #### 安装必要依赖包 为了顺利编译 `curl`,建议先通过 APT 包管理工具安装所需的所有依赖项: ```bash sudo apt update && sudo apt install build-essential libssl-dev zlib1g-dev libnghttp2-dev librtmp-dev libssh2-1-dev libidn2-0-dev libpsl-dev libldap2-dev unixodbc-dev gnutls-bin ``` 这一步骤可以确保系统中有所有必需的头文件和库文件[^1]。 #### 设置 LIBS 变量 当编译过程中指定额外的库路径时,可以通过设置 `LIBS` 环境变量来告知编译器去哪里寻找这些库。对于 `curl` 的编译而言,在执行 configure 脚本之前定义好此变量是非常重要的: ```bash export LIBS="-L/usr/local/lib" ./configure --with-openssl=/usr/local/ssl make clean; make ``` 这里假设 OpenSSL 已经被安装到了 `/usr/local/ssl` 下,并且其他可能需要的第三方库位于 `/usr/local/lib` 文件夹内。当然具体位置取决于实际环境中软件的实际部署情况[^2]。 #### 修改 Makefile 或者使用 LDFLAGS 参数 另一种方式是在运行 `./configure` 命令前设定 `LDFLAGS` 来添加自定义的库目录搜索路径: ```bash export LDFLAGS="-L/path/to/libs" ./configure ... ``` 这种方式同样适用于解决找不到特定版本共享对象(.so)的问题。注意替换上面命令中的 `/path/to/libs` 成真实的库所在的位置[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值