Posted on 2010-05-24 14:24
S.l.e!ep.¢% 阅读(4837)
评论(0) 编辑 收藏 引用 所属分类:
CURL
最近开发中用到curl库,虽然都是很简单的应用,但对这个库还是产生了兴趣,想学习总结一下。curl库功能非常强大,这里主要针对http应
用,尤其是http文件下载做一个总结。当然了,还是主要针对Windows系统来讲。
本文是第一篇,当然要简单介绍一下curl,然后说一下Windows系统下的编译安装,以及对curl工具的简单应用。
curl是一个基于命令行的应用工具,提供利用URL标准进行文件传输的功能。目前已经支持非常多的流行的互联网协议,如:FTP,
FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and
FILE等。curl支持SSL认证,HTTP
POST/PUT,FTP上传,HTTP上传、代理、cookies、用户+密码认证、文件续传、代理管道等一系列强大功能。curl是用C语言写的,但
是绑定了很多开发语言。大体上可以把curl分成命令行工具和libcurl库两个部分,命令行工具可以直接输入指令完成相应功能,libcurl则是一
个客户端URL传输库,是线程安全且兼容IPv6,可以非常方便地用来做相关开发。
更多关于curl的信息可以参考官网http://curl.haxx.se/。
curl的相关文档非常全,不得不赞一下。其实查阅原文文档是一个很好的习惯,而且还是一件很惬意的事情,对提高英文阅读能力帮助也很大。
从curl官方网站上可以直接下载到编译好的lib,dll和exe文件,但是自己由源码编译安装curl,也是一件有意思的事情。从网站上下载源码包,
解压缩后会看到根文件目录下面有很多文件及文件夹。其中的文件是有关curl项目的介绍、版本变更情况、以及一些有关配置和编译的文件;文件夹中比较重要
的有3个:docs、lib和src,docs中包括项目的所有相关文档,lib中为libcurl库的源码,src为curl命令行工具的源码。
如果你熟悉MSVS开发环境的话,那么编译过程再简单不过了,因为最新的curl源码包中已经自带了vc6的工程文件,只要高于6.0版本的环境都可以直
接打开工程进行编译链接,生成二进制文件。整个solution中包含两个project,一个是libcurl库,一个是curl的命令行工具。其
中,curl.exe运行是要加载libcurl.dll动态库的。另外,自带的工程设置中没有用到OpenSSL或Zlib这些第三方库,如果需要用到
相关扩展功能的话,需要配置引用这些库文件进行编译。
还有一种方式是通过MSVS命令行的方式进行编译。步骤如下:
1、首先要清楚自己安装的是msvc哪个版本,目前常见的vc6,vc2003(vc7),vc2005(vc8)和vc2008(vc9),curl源
码包中都已经写好了相应的makefile文件,我机器上装的是vc2005;
2、将vc的安装目录的bin文件目录加到PATH环境变量中,我机器上bin的路径为C:\Program Files\Microsoft
Visual Studio
8\VC\bin,这一步主要是为了使我们能够在任何路径下运行bin路径下的工具,如后面要用到的编译工具cl.exe和make工具
nmake.exe;
3、在运行中启动cmd.exe,在其中运行bin目录下的vcvars32.bat这个批处理文件,这个文件中定义了很多vc库文件及相关资源工具的访
问变量,指明了响应资源的访问路径,跟环境变量的作用相似,但是只作用于当前命令行窗口;
4、在cmd中进入到你要编译的curl源码的根文件目录下,输入命令“nmake
vc”回车,应该就会看到一长串的编译信息输出。结束后,在lib子目录下会生成release文件夹,里面即为编译后生成的目标文件以及静态链接库文件
libcurl.lib,在src子目录下生成curl.exe可执行文件。这一步中需要注意的是根文件目录下的makefile文件中将vc编译工具定
义为了vc6,我们应该把其中的“VC=vc6”这句改为自己机器上对应的vc版本。
另外,“nmake
vc”命令也是没有引用任何第三方库来进行编译的,默认编译静态链接的release版本文件。如果要编译其他版本或者引用第三方库来进行编译,则要添加
make参数,具体可以参考makefile文件中的配置。
以上主要介绍的是在Windows平台下用msvc工具编译curl代码,其实curl库几乎可以支持所有常见的操作系统,而且支持的编译工具也很多,如
MingW32、Cygwin、Borland
C++等。curl的文档中写得都非常清楚,这里就不详细说了。
以上简单介绍了curl库和在Windows平台下用msvc环境编译curl执行文件的步骤,下一篇中将总结一些应用curl库的知识。