一、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库编译方法相关推荐

  1. linux libcurl 库使用方法

    一.ibcurl简介 作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, I ...

  2. 后端开发之libcurl库编译与安装

    curl 是以URL语法来传输输出的一个命令行工具.libcurl 是对对其功能的封装,实现了命令行工具的所有功能. curl 支持HTTP.HTTPS.FTP.FTPS.DICT.TELNET.LD ...

  3. C++ Poco库编译方法

    目录 前言 Windows编译 Linux 编译 1.x86平台编译 2.交叉编译 总结 前言 C++ Poco库是笔者目前最常用的C++跨平台框架库,代码结构简单,提供功能丰富.易编译,好上手,本文 ...

  4. libcurl库使用方法

    一.ibcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP ...

  5. iphone x264 库编译方法

    首先到 http://www.videolan.org/developers/x264.html下载x264的库,然后解压. 打开shell,进入x264的目录,执行如下语句 CC=/Applicat ...

  6. linux opencv编译静态库,使用openCV的静态库编译

    转载请注明出处: By 少侠阿朱 摘要: 本文主要讲述如何使用opencv静态库进行编译,生成脱离opencv环境可执行.exe文件. 实现的效果: 此方法生成的exe文件在其他没有配置openCV环 ...

  7. WIN下免费pdf转图片PNG/JPG/TIFF软件,poppler和pdftocairo开源库编译,中文文件名出错修正

    wxleasyland@139.com 2021.12 想要一个打印到图片的虚拟打印机软件,结果都是收费的.自已编是不可能的,工作量太大. 现在PDF虚拟打印机很多,可以打成PDF,再转成图片. 想要 ...

  8. OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别

    目录 一   写在前面 二   编译OpenSSL支持libcurl的https访问 ① 下载openssl库 ② 把库的开源配置包安装在指定文件夹并编译 三   编写人脸识别代码第一次 ① 翔云人工 ...

  9. Quartus调用Modelsim SE避免重复编译Altera器件库的方法

    最近用Quartus 15.0配合Modelsim SE 10.4的64位版本,简直就是闪电一般的仿真速度.但是众所周知,SE版本最大的问题就是每次由Quartus自动调用时,都要重新编译所使用的器件 ...

最新文章

  1. js获取URL请求参数与改变src
  2. 怎样学好python-怎样学好python
  3. Cheat Engine教程关卡密码
  4. alexnet 论文翻译
  5. 的有效性最好_世界前10名面膜补水排行榜 最好用的十款面膜推荐
  6. highcharts动态获取数据生成图表问题
  7. 玩转oracle 11g(23):区分大小写和字符集不同
  8. 一元多项式的表示和相加【数据结构】
  9. DOS 命令、必会的 10个 DOS 命令
  10. python 小说数据挖掘_Python 中的实用数据挖掘
  11. iPhone 5今日大限已至!不升级全部变砖
  12. 《出发吧一起》第二阶段个人总结——Day01
  13. 迅雷 linux 命令行 版本号,在Linux系统下使用wine运行迅雷5的方法
  14. 【NOIP practice】BSOJ 3132 卡扎菲 并查集
  15. 【中医学】10 针灸-2:常用腧穴
  16. java+selenium简单使用给斗鱼主播刷弹幕-.-
  17. ultraedit许可证id 7位数字_优雅的数据库ID设计
  18. NGNIX在CENTEROS 下部署
  19. 针对Intel芯片mac、win平台对cpu功耗、频率、电源等信息检测
  20. iofod - 为攻城师们打造的低代码平台

热门文章

  1. 数海信息集团CEO刘志欣2022年新年致辞:踔厉奋发 数智领航
  2. 软件工程第1次作业:阅读教材,提五个问题
  3. CSS - 文本文字 增加外框、阴影、边框
  4. csdn--接口自动化测试之postman如何设置断言
  5. WIN10 + Ubuntu 16.04 双系统安装教程
  6. CI持续集成环境搭建(3)--git的安装与搭建
  7. windows7与linux共享文件夹oracle,ORACLE expdp备份到windows网络共享文件目录(NFS)
  8. ajax 提交list
  9. Procreate iPad绘画教程
  10. 互联网之父赛弗:互联网仍很年轻