libcurl库编译方法
一、libcurl简介
libcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP这些协议,同时支持使用SSL证书的安全文件传输:HTTP POST, HTTP PUT, FTP 上传, 基于HTTP形式的上传、代理、Cookies、用户加密码的认证等多种应用场景。另外,libcurl是一个高移植性的库,能在绝大多数系统上运行,包括Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS等。
二、编译方法(ubuntu环境下)
下载库文件:
libcurl的官网 http://curl.haxx.se/
库下载https:(https://github.com/curl/curl/releases/tag/curl-7_71_
- 解压文件
tar vxf curl-7.71.1.tar.bz2
查看README等内容获取安装
第一个框框里面的意思大致就是课把这个安装到自己想要的目录下安装
我这里就把他安装在该目录下自创的_install下
./configure --prefix=$PWD/_install
make
make install
三、Demo测试
访问百度为例
#include <stdio.h>
#include <curl/curl.h>#define true 1
#define false 0
typedef unsigned int bool;bool getUrl(char *filename)
{CURL *curl;CURLcode res;FILE *fp;if ((fp = fopen(filename, "w")) == NULL) // 返回结果用文件存储return false;struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "Accept: Agent-007");curl = curl_easy_init(); // 初始化if (curl){//curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");// 代理curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);// 改协议头curl_easy_setopt(curl, CURLOPT_URL,"http://www.baidu.com");curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); //将返回的http头输出到fp指向的文件curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp); //将返回的html主体数据输出到fp指向的文件res = curl_easy_perform(curl); // 执行if (res != 0) {curl_slist_free_all(headers);curl_easy_cleanup(curl);}fclose(fp);return true;}
}
bool postUrl(char *filename)
{CURL *curl;CURLcode res;FILE *fp;if ((fp = fopen(filename, "w")) == NULL)return false;curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "&logintype=uid&u=xieyan&psw=xxx86"); // 指定post内容//curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");curl_easy_setopt(curl, CURLOPT_URL, " http://mail.sina.com.cn/cgi-bin/login.cgi "); // 指定urlcurl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);res = curl_easy_perform(curl);curl_easy_cleanup(curl);}fclose(fp);return true;
}
int main(void)
{getUrl("/tmp/get.html");// postUrl("/tmp/post.html");
}
编译指令
gcc demo.c -L ~/httpHandler/curl-7.71.1/_install/lib/ -lcurl
要去下载的库文件里面去找头文件
gcc demo.c -I ~/httpHandler/curl-7.71.1/include/ -L ~/httpHandler/curl-7.71.1/_install/lib/ -lcurl
~/:工作目录,./:是当前目录
-I ~/httpHandler/curl-7.71.1/include/ 表示将~/httpHandler/curl-7.71.1/include/目录作为第一个寻找头文件的目录,件的目录,寻找的顺序是:~/httpHandler/curl-7.71.1/include/-->/usr/include-->/usr/local/include
-L ~/httpHandler/curl-7.71.1/_install/lib/表示将 ~/httpHandler/curl-7.71.1/_install/lib/目录作为第一个寻找库文件的目录,寻找的顺序是/httpHandler/curl-7.71.1/_install/lib/-->/lib/-->/usr/lib/-->/usr/local/lib/
-lcurl表示在上的的lib路径中寻找libcurl.so动态库文件(.a是静态库)
这个错误的原因是因为没有添加环境变量,面向百度即可解决
配置环境变量(根据自己的目录修改)
export LD_LIBRARY_PATH=~/httpHandler/curl-7.71.1/_install/lib/
修改之后就能运行成功了!(这个方法是零时有效,如果需要永久还需重新配置,可参考https://blog.csdn.net/weixin_44234294/article/details/107332180)
总结
通过这次libcurl第三方库的编译方法,其他的第三方库也可以按照这个方法,同时加深了gcc -I -L -l等的相关知识。
libcurl库编译方法相关推荐
- linux libcurl 库使用方法
一.ibcurl简介 作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, I ...
- 后端开发之libcurl库编译与安装
curl 是以URL语法来传输输出的一个命令行工具.libcurl 是对对其功能的封装,实现了命令行工具的所有功能. curl 支持HTTP.HTTPS.FTP.FTPS.DICT.TELNET.LD ...
- C++ Poco库编译方法
目录 前言 Windows编译 Linux 编译 1.x86平台编译 2.交叉编译 总结 前言 C++ Poco库是笔者目前最常用的C++跨平台框架库,代码结构简单,提供功能丰富.易编译,好上手,本文 ...
- libcurl库使用方法
一.ibcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP ...
- iphone x264 库编译方法
首先到 http://www.videolan.org/developers/x264.html下载x264的库,然后解压. 打开shell,进入x264的目录,执行如下语句 CC=/Applicat ...
- linux opencv编译静态库,使用openCV的静态库编译
转载请注明出处: By 少侠阿朱 摘要: 本文主要讲述如何使用opencv静态库进行编译,生成脱离opencv环境可执行.exe文件. 实现的效果: 此方法生成的exe文件在其他没有配置openCV环 ...
- WIN下免费pdf转图片PNG/JPG/TIFF软件,poppler和pdftocairo开源库编译,中文文件名出错修正
wxleasyland@139.com 2021.12 想要一个打印到图片的虚拟打印机软件,结果都是收费的.自已编是不可能的,工作量太大. 现在PDF虚拟打印机很多,可以打成PDF,再转成图片. 想要 ...
- OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别
目录 一 写在前面 二 编译OpenSSL支持libcurl的https访问 ① 下载openssl库 ② 把库的开源配置包安装在指定文件夹并编译 三 编写人脸识别代码第一次 ① 翔云人工 ...
- Quartus调用Modelsim SE避免重复编译Altera器件库的方法
最近用Quartus 15.0配合Modelsim SE 10.4的64位版本,简直就是闪电一般的仿真速度.但是众所周知,SE版本最大的问题就是每次由Quartus自动调用时,都要重新编译所使用的器件 ...
最新文章
- js获取URL请求参数与改变src
- 怎样学好python-怎样学好python
- Cheat Engine教程关卡密码
- alexnet 论文翻译
- 的有效性最好_世界前10名面膜补水排行榜 最好用的十款面膜推荐
- highcharts动态获取数据生成图表问题
- 玩转oracle 11g(23):区分大小写和字符集不同
- 一元多项式的表示和相加【数据结构】
- DOS 命令、必会的 10个 DOS 命令
- python 小说数据挖掘_Python 中的实用数据挖掘
- iPhone 5今日大限已至!不升级全部变砖
- 《出发吧一起》第二阶段个人总结——Day01
- 迅雷 linux 命令行 版本号,在Linux系统下使用wine运行迅雷5的方法
- 【NOIP practice】BSOJ 3132 卡扎菲 并查集
- 【中医学】10 针灸-2:常用腧穴
- java+selenium简单使用给斗鱼主播刷弹幕-.-
- ultraedit许可证id 7位数字_优雅的数据库ID设计
- NGNIX在CENTEROS 下部署
- 针对Intel芯片mac、win平台对cpu功耗、频率、电源等信息检测
- iofod - 为攻城师们打造的低代码平台