① 如何在qnx上添加libcurl库
debian ubuntu安装 试试 sudo apt-get install libcurl3 python-pycurl Redhat系 CentOS RHEL Fedora试试 yum -y install curl curl-devel
② 如何编译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目录
③ linux怎么安装libcurl
下载libcurl的安装包后,依次执行如下命令安装即可。
1、进入压缩包所在目录
# cd /root/soft
2、解压缩安装包
# tar -zxf curl-7.42.1.tar.gz
3、进入解压后的安装包目录
# cd curl-7.42.1
4、配置
# ./configure --prefix=/usr/local/curl
注:下载安装包时请找一个国内的镜像站下载,要不然下载速度会非常慢。
④ c++多线程中使用libcurl库的问题
库本身是线程安全的,多个线程之间不要共享CURL*的句柄,应该是没有问题的. 以下是官方说法:
http://curl.haxx.se/libcurl/c/libcurl-tutorial.html 中的Multi-threading Issues:
The first basic rule is that you must never
simultaneously share a libcurl handle (be it easy or multi or whatever)
between multiple threads. Only use one handle in one thread at any
time. You can pass the handles around among threads, but you must never
use a single handle from more than one thread at any given time.
libcurl is completely thread safe, except for two
issues: signals and SSL/TLS handlers. Signals are used for timing out
name resolves (ring DNS lookup) - when built without c-ares support
and not on Windows.
If you are accessing HTTPS or FTPS URLs in a
multi-threaded manner, you are then of course using the underlying SSL
library multi-threaded and those libs might have their own requirements
on this issue. Basically, you need to provide one or two functions to
allow it to function properly.
⑤ 如何在LINUX下安装libcurl
可以使用yum命令进行安装。
yuminstalllibcurl
注:机器可以联网的情况下,如果不能联网需要配置本地yum源
⑥ 如何在Visual Studio 2013中使用libcurl库
#pragma comment (lib,"你的库文件的名字.lib")
写在程序的开头 还一种方法是 添加库文件的路径 在工具->选项->项目和解决方案->VC++目录下添加你库文件的路径。
最好放在默认路径下面,编译的时候它会去链接
⑦ libcurl是什么语言开发的
编译源码
有很多种不同的方式来编译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
autoconf宏
当你编写配置脚本来检测libcurl及其相应设置时,你可以使用预定义宏。文档docs/libcurl/libcurl.m4告诉你如何使用这些宏。
跨平台的可移植的代码
libcurl的开发人员花费很大的努力,使libcurl尽可能在大多数平台上正常运行。
全局初始化
应用程序在使用libcurl之前,必须先初始化libcurl。libcurl只需初始化一次。可以使用以下语句进行初始化:
curl_global_init();
curl_global_init()接收一个参数,告诉libcurl如何初始化。参数CURL_GLOBAL_ALL 会使libcurl初始化所有的子模块和一些默认的选项,通常这是一个比较好的默认参数值。还有两个可选值:
CURL_GLOBAL_WIN32
只能应用于Windows平台。它告诉libcurl初始化winsock库。如果winsock库没有正确地初始化,应用程序就不能使用socket。在应用程序中,只要初始化一次即可。
CURL_GLOBAL_SSL
如果libcurl在编译时被设定支持SSL,那么该参数用于初始化相应的SSL库。同样,在应用程序中,只要初始化一次即可。
libcurl有默认的保护机制,如果在调用curl_easy_perform时它检测到还没有通过curl_global_init进行初始化,libcurl会根据当前的运行时环境,自动调用全局初始化函数。但必须清楚的是,让系统自已初始化不是一个好的选择。
当应用程序不再使用libcurl的时候,应该调用curl_global_cleanup来释放相关的资源。
在程序中,应当避免多次调用curl_global_init和curl_global_cleanup。它们只能被调用一次。
⑧ 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 进行编译