libcurl编译ssl
❶ curl和libcurl的区别简介
curl简介
curl是利用URL语法在命令行方式下工作的开源文件传输工具。
它支持很多协议:DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP,
LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP。
curl同样支持SSL证书,HTTP POST, HTTP
PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies、用户名/密码认证(Basic, Digest,
NTLM等)、下载文件断点续传,上载文件断点续传(file transfer resume),http代理服务器管道(proxy
tunneling)以及其他特性。
curl是瑞典curl组织开发的,curl的官网是http://curl.haxx.se/,可以从官网获取它的源代码和相关说明。
libcurl简介
libcurl为一个免费开源的,客户端url传输库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP,
HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP,
SMTP, SMTPS, Telnet and TFTP等协议。
同curl一样,libcurl也支持SSL证书,HTTP POST, HTTP
PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies、用户名/密码认证(Basic, Digest,
NTLM等)、下载文件断点续传,上载文件断点续传(file transfer resume),http代理服务器管道(proxy
tunneling)等。
libcurl是高度可移植的,可以工作在不同的平台上,支持Windows,Unix,linux等。
libcurl是免费的,线程安全的,IPV6兼容的,同事它还有很多其他非常丰富的特性。libcurl已经被很多知名的大企业以及应用程序所采用。
可以在这里获取libcurl的源码及相关文档。
curl与libcurl对比
相同点
curl和libcurl都可以利用多种多样的协议来传输文件,包括HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE等。
不同点
curl是命令行工具,可以通过shell或脚本来运行curl。curl底层所使用的库是libcurl。
libcurl是一个库,通常与别的程序绑定在一起使用,如命令行工具curl就是封装了libcurl库。所以我们也可以在你自己的程序或项目中使用libcurl以获得类似CURL的强大功能。接下来将要介绍的php扩展就是对curl的一个封装。
❷ 为什么libcurl的静态库不能引用ssl的动态库
我没有观察过这种状况,我想报依赖的库未定义就是因为动态了引用了依赖库了吧,如果libcur.a静态的引用了ssl的库,那就不会有未定义了,你可以
在编译时同时连一下ssl的动态库。我想应该是编译器在链接静态库是处于某些考虑要求寻找静态库中动态引用的动态库中函数的定义吧,也许和.a文件的内容
有关,你可以试试生成.a文件时使用一些未定义的函数,看看能否成功制作.a文件
❸ 如何编译libcurl
1:linux下源码编译
./configure --prefix=/usr/local/curl --disable-shared --enable-static --without-libidn --without-ssl --without-librtmp --without-gnutls --without-nss --without-libssh2 --without-zlib --without-winidn --disable-rtsp --disable-ldap --disable-ldaps --disable-ipv6
注意:不需要其它功能就disable,不然会在连接时报错, 如果你没有disable掉,但你的机器上又没有安装相应的库,link时会报错。
2:windows下源码编译
libcurl 7.21以后的版本在Windows下的编译比较简单,自带了MinGW和VC环境的Makefile文件,首先去Curl官网下载源代码:curl.haxx.se/download.html,任选一个下载即可,推荐这个: curl-7.21.2.tar.gz,下载完成后解压开,打开命令行进入curl源码目录,(在此之前请先设置好MinGW的环境变量):
cd curl-7.21.2
编译libcurl库文件:
cd lib
make -f Makefile.m32
等待编译完成即可
(若需编译生成curl可执行文件,则执行:
cd ../src
make -f Makefile.m32)
编译完成后,我们需要复制include头文件和库文件到一个目录供程序开发用
1. 新建curllib目录
2. 新建curllib/include目录,将源代码include目录里的curl文件夹复制到curllib/include目录,这些是使用libcurl需要的头文件
3. 新建curllib/lib目录,将源代码lib目录里编译好的库文件libcurl.a,libcurldll.a,libcurl.dll复制到curllib目录
4. 将MinGW安装目录下lib文件夹里的libwldap32.a和libws2_32.a复制到curllib/lib目录
❹ 求助.编译libcurl+ssl的时候一直不支持ssl-CSDN论坛
原因是Linux有一个SELinux保护模式引起的。1.关闭SELINUX的方法:vi/etclinux/config将SELINUX=enforcing改成SELINUX=disabled需要重启2.不关闭SELINUX的方法:#setenforce0#chcon-c-v-R-usystem_u-robject_r-ttextrel_shlib_t/usr/local/apache/moles/libphp5.so#servicehttpdrestart#setenforce1
❺ 我用libcurl开发了一个访问https的程序 在linux和win下都会不定期崩溃,看了很多网
访问https你是指服务器证书(ssl证书)吧?这个不用自己开发,去申请一个免费的就行了,网页链接这个兼容性和稳定性比较好。
❻ libcurl库编译生成不带版本的设置方法
原文链接: https://blog.csdn.net/Auris/article/details/94549541
Android JNI 最近调试发现Android可以调用Linux的so库,但是Android不能直接调用so库带版本号的文件,类似于xxx.so.4.5.0;
xxx.so.4.5.0 的文件方式是Linux用来区分so库文件的版本作用的,为了让Android能够调用so库,需要在编译so库的时候,配置编译脚本
,使其支持生成不带版本号的so库文件;
我们在使用libcurl库的时候,就出现了这个问题,将libcurl编译生成的so库文件libcurl.so.4.5.0直接导入到Android工程中,运行提示
无法找打libcurl.so.4.5.0文件;
通过修改curl源码文件夹下的configure文件
library_names_spec='${libname}${shared_ext}'
soname_spec=''
编译开源项目: https://github.com/ibaoger/libcurl-android
一定要用ndk-r13b,ndk-r13b,ndk-r13b 进行编译
❼ 如何使libcurl支持https
extern"C"__declspec(dllexport)int__cdeclhttps_post(constchar*strUrl,char*szPost,constchar*pCaPath)
{
CURL*curl;
CURLcoderes;
res_buf="";
curl=curl_easy_init();//初始化
if(curl&&strUrl)
{
curl_easy_setopt(curl,CURLOPT_URL,strUrl);//设置url地址
if(szPost)
{
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,szPost);//设置post参数
}
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_func);//设置回调函数
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&res_buf);//设置写数据
if(NULL==pCaPath)
{
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,false);//设定为不验证证书和HOST
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYHOST,false);
}
else
{
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,true);
curl_easy_setopt(curl,CURLOPT_CAINFO,pCaPath);
}
res=curl_easy_perform(curl);//执行
if(res==CURLE_OK)
{
if(m_json)
{
deletem_json;
m_json=NULL;
}
m_json=newchar[strlen(res_buf.c_str())+1];
strcpy(m_json,Utf8toAnsi(res_buf.c_str()));;
curl_easy_cleanup(curl);
return1;
}
return-1;
}
return-1;
}
❽ libcurl是什么语言开发的
libcurl是C语言开发的网络库,支持多种网络协议.
有很多种不同的方式来编译C语言代码。这里使用UNIX平台下的编译方式。即使你使用的是其他的操作系统,你仍然可以通过阅读本文档来获取许多有用的信息。
编译
你的编译器必须知道libcurl头文件的位置。所以在编译的时候,你要设置头文件的包含路径。可以使用curl-config工具来获取这方面的信息:
$ curl-config –cflags
链接
编译完源码(这时的源代码不是指libcurl的源代码,你是你自己写的程序代码)之后,你还必须把目标文件链接成单个可执行文件。你要链接libcurl库,以及libcurl所依赖的其他库,例如OpenSLL库。当然可能还需要一些其他的操作系统库。最后你还要设置一些编译选项,当然可以使用curl-config工具简化操作:
$curl-config –libs
是否使用SSL
定制编译libcurl。与其他库不同的是,libcurl可以定制编译,根据实际需要是否支持某些特性,如是否支持SSL传输,像HTTPS和FTPS。如果决定需要支持SSL,必须在编译时正确的设置。可以使用’curl-config’来判断libcurl库是否支持SSL:
$ curl-config –feature
❾ 求助.编译libcurl+ssl的时候一直不支持ssl-CSDN论坛
.编译libcurl+ssl的时候一直不支持
unt基于Node.js,其中 npm 是 Node.js 的包管理器,而Grunt和Grunt插件就通过 npm 安装并管理。Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用。
安装Node.js:
去Node.js官网,点击INSTALL下载并安装,现在的Node.js会自动安装npm。
安装完成之后,打开命令行,进行后续的操作(开始->输入CMD 或 开始->所有程序 ->命令提示符)。
进入Node.js的安装目录(默认路径为"C:\Program Files\nodejs"):
cd \pro*\nod*