Libcurl安装及编译

来源:互联网 发布:excel怎么统计重复数据 编辑:程序博客网 时间:2024/06/05 08:44
一、下载地址:http://curl.haxx.se/download.html
解压缩之后的文件夹中有3个比较重要的目录:docs、lib和src,其中,docs中包括项目的所有相关文档,lib中为libcurl库的源码,src为curl命令行工具的源码。

二、Windows环境
拿vc6举例来说,直接编译lib目录下的工程文件:vc6libcurl.dsw,可能会提示错误:
MSVC 6.0 requires "February 2003 Platform SDK"

解决办法:
1、按照这篇文章里说的:http://blog.csdn.net/wishfly/article/details/7005123,下载这里面的东西:http://wenwen.soso.com/z/q265788570.htm
实践证明,win7中解压运行setup.exe,确实不成功,弹出网页:Welcome to the SDK UpdateSite。将里面的可执行文件安装一遍,然后打开February2003 Platform SDK,选择Register PSDK Directories with VisualStudio进行注册。

2、在工程文件中添加宏:ALLOW_MSVC6_WITHOUT_PSDK。(可编译通过,但是不知道有没有什么影响)

3、按照这篇文章里说的:http://blog.csdn.net/wangqis/article/details/2757947,下载并安装:http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en(未验证)
注:为了使#include<curl/curl.h>有效,需要设置头文件的查找目录:“Project->Settings->C/C++->Additionalincludedirectories”,多个目录以逗号分隔。如果是自己建的工程,需要包含宏定义:CURL_STATICLIB

三、Linux环境
1.安装curl wgethttp://curl.haxx.se/download/curl-7.26.0.tar.gz 

tar -zxvf curl-7.26.0.tar.gz 
cd curl-7.26.0
./configure --prefix=/usr/local/curl 
make 
make install
这里需要root权限

2.查看当前已安装的curl版本
curl -V

3.如果当前系统已经安装旧版本的curl而不想覆盖,或者没有root权限,可将curl安装到本地目录,即:修改prefix=后面的路径为:/home/目标目录。查看本地目录的版本需要进入目标目录中的bin下,然后执行./curl-V。

4.在函数中调用curl并编译的时候,默认将使用系统中已安装的curl,如果想要使用本地目录中的,需要进行头文件和库文件的目录设置,其中:设置头文件为-I,设置库文件为-L,比如:
g++ test.cpp -lcurl -I /home/目标目录/include/ -L /home/目标目录/lib/

5.可将自己的程序和curl一起编译成静态库/动态库,供其他程序使用:
(1)生成静态库:
ar rcs libmylib.a mylib.o
(2)静态库的使用:
gcc -o test test.c -lmylib
(注:系统约定静态库以lib开头,以.a结尾,而动态库以.so结尾,因而编译的时候不需要带上前缀和后缀。)
(3)生成动态库:
gcc -fPIC -o mylib.o -cmylib.c
gcc -shared -o libttt.somylib.o
或者只执行一条语句
gcc -fPIC -shared -olibttt.so mylib.c
(4)动态库的使用:
gcc -o test test.c/usr/lib/libttt.so
(注:引用动态库时,必须含有路径,如果只是使用libttt.so,则必须确保这个库所在目录包括在PATH环境变量中。)

6.调用编译好的curl库,运行程序的时候,可能会提示下面错误信息:
error while loading shared libraries: libcurl.so.4: cannot openshared object file: No such file or directory
这种情况一般是由于没有root权限进行安装,因而默认的库查找目录下没有相应文件。
解决办法:(参考文章:http://skatings.blogbus.com/logs/50437681.html)
(1)使用root权限进行安装。
(2)设置LD_LIBRARY_PATH=dir(dir为libcurl.so.4的目录),例如:exportLD_LIBRARY_PATH=/home/lib,可通过echo$LD_LIBRARY_PATH检查设置是否成功,此项设置在shell的当前会话中全局生效。
(3)多个文章中提到可以使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路径查找库,避免了使用LD_LIBRARY_PATH环境变量查找,但是我所使用的系统中似乎不支持该选项。
(4)静态编译
(参考文章:http://blog.csdn.net/langeldep/article/details/6223649
           http://blog.csdn.net/langeldep/article/details/6427780)
在g++编译的时候使用-lcrypto -lidn -lssl -lrt/usr/lib/libcurl.a(意思是:前面四个使用动态链接,后面一个使用静态链接),假设g++生成的可执行程序名为CurlTest,则执行该语句:lddCurlTest
如果仍然失败的话,可重新编译安装libcurl,执行步骤1,但是在./configure的执行语句中需要添加:--disable-ldap--disable-ldaps,编译好之后再进行链接即可。

四、使用异步DNS解析
1、下载c-ares:
http://c-ares.haxx.se/download/

2、windows环境编译:
(稍后添加)

3、linux环境编译:
(1)运行c-ares解压目录下的buildconf
(2)再在当前目录下运行autoconf configure.ac,然后就生成了configure文件
(3)与其它库的正常安装方式相同,可在prefix后设置路径,如/home/test/arespath
(4)按照上面介绍的方法重新编译libcurl,其中,libcurl编译的时候,./configure的执行语句中需要添加:--enable-ares,如果要使用自己新生成的ares库,而不使用旧版本的,可添加ares的安装路径,如--enable-ares=/home/test/arespath
(5)如果步骤(4)执行成功,结果中的
 resolver:       default (--enable-ares /--enable-threaded-resolver)
 相应更改为:
 resolver:       c-ares
原创粉丝点击