文章目录

  • 一、libcurl等第三方库的通用编译方法
    • 1、库下载
    • 2、开始安装库
  • 二、调用libcurl编程访问百度主页
    • 1.代码
    • 2、编译注意(编译时链接库、头文件路径,运行需添加动态库为环境变量)

以下部分内容参考博文
https://www.cnblogs.com/xietianjiao/p/13260021.html
https://blog.csdn.net/zhuguanlin121/article/details/116935439

一、libcurl等第三方库的通用编译方法

libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。

1、库下载

libcurl的官网 http://curl.haxx.se/
库下载https://github.com/curl/curl/releases/tag/curl-7_71_1

直接拖拽到Linux中,然后移动到/home下

把curl库复制到新文件夹

解压curl


进入解压后的curl

查看README


进入docs,重点看README文件,怎么安装库

查看INSTALL


查看INSTALL.md


Unix环境下的安装步骤

2、开始安装库

  1. ./configure
  2. make
  3. make install
  4. 安装成功

    需要的一些库

二、调用libcurl编程访问百度主页

1.代码

#include <stdio.h>
#include <curl/curl.h>typedef unsigned int bool;//数据类型别名用typedef  有分号
#define true 1            //宏定义(替换)用define         无冒号
#define false 0bool getUrl(char *filename)//GET请求
{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>指向的文件,//即为filename文件,而主函数传入的参数是 /tmp/get.html,即为真正保存在get.html文件中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)//POST请求
{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");
}

为什么要有下面的那三句代码呢?
类似于bool,true,faluse,这是C99标准才会支持,C++里有专门的bool类型,用来表示真或假。但是在C语言里没有这样的类型,为了修改方便直接这样替换。

2、编译注意(编译时链接库、头文件路径,运行需添加动态库为环境变量)

链接库和头文件再编译,同时注意指明他们的路径

 gcc Test1.c -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib/ -lcurl
  • Test1.c 文件名
  • ./curl-7.71.1/_install/include/ 头文件的路径
    -./curl-7.71.1/_install/lib/ 库的路径

注意:动态库静态库的链接用-L,而头文件用-I

错误排查:

  • (1)提示找不到头文件#include <curl/curl.h>,说明没有指明头文件的路径

  • (2)如果只是使用-L是默认去usr/lib下去找的,会提示找不到库文件的路径cannot find -lcurl

  • (3)如果编译报错一堆函数不认识,函数是存在库里面的,说明没有链接库

    链接动态库:

    export LD_LIBRARY_PATH=库的路径

成功运行后,可以看到vi /tmp/get.html中已经有了百度官网的代码。

libcurl库简介相关推荐

  1. 网络编程知识预备(5) ——libcurl库简介及其编程访问百度首页

    本文为学习笔记,整合课程内容以及下列文章: 其中,libcurl函数库常用字段解读部分: 参考博文:原文地址 作者:冬冬他哥哥 目录 Libcurl库简介 Libcurl等三方库的通用编译方法 三方库 ...

  2. linux libcurl 库使用方法

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

  3. libcurl库的安装和使用

    libcurl简介: libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持H ...

  4. Http之libcurl库实现

    原文转载:冬冬他哥哥 仅做笔记参考,代码看不清的请直接跳原文 http协议之详解(点) http协议之https(点) http协议之libcurl(点) 一.libcurl简介 libcurl是一个 ...

  5. libcurl库使用详情、libcurl库的制作

    文章目录 libcurl库的制作 1.libcurl简介: 2.下载libcurl库并制作自己的curl库 3.API说明 相关例子见官网:[example.html](https://curl.se ...

  6. Libcurl库详解

    一.libcurl简介 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持 ...

  7. libcurl库介绍

    一.libcurl简介 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持 ...

  8. linux openssl libcurl库 交叉编译

    目录 一.编译前环境准备 二.编译openssl 三.编译curl 一.编译前环境准备 使用的内核:4.15.0-118-generic(命令:uname -r可以查看) 交叉编译器:aarch64- ...

  9. 使用libcurl库编写HTTP客户端(包括GET/POST/HTTPS)

    最近在写一个应用程序, 需要与HTTP服务器进行数据交互, 于是乎自己写了一个类似wget的功能的客户端, 实现很简单, 但是功能不给力, 只可基本功能. 于是又在网上找了找, 发现使用libcurl ...

最新文章

  1. linux入门教程命令,Linux入门命令掌握
  2. python 归一化 标准化
  3. 字节流转化为文件流_C#文件转换为字节流及字节流转换为文件
  4. 汇编中寄存器加[]的意思
  5. 空间站是如何绕地飞行的?张朝阳物理课开播啦
  6. myeclipse8.5集成svn
  7. Linux cc 和 gcc 的区别概括介绍
  8. 如何结合短信和邮件有效的监控网站
  9. 为什么要测款,直通车测款怎样设置
  10. C语言中计算字符串长度的函数
  11. 重新定义高端存储架构,华为Dorado V6树立全闪存新标杆
  12. Flask项目: 蓝本
  13. 三大运营商的云计算之殇
  14. 计算机在制造业中的应用领域是什么,计算机在制造业中的应用ppt
  15. 单道批处理操作系统、多道批处理操作系统以及分时操作系统区别
  16. 以太坊区块链浏览器的搭建
  17. Android app ADB命令
  18. 图案设计灵感怎么写_设计的灵感来源
  19. JS 删除对象和数组中的某个属性
  20. 按揭买房的朋友请仔细看,怎样办理贷款最省钱

热门文章

  1. Spider学习笔记(十二):视频下载插件ffmpeg的使用操作介绍
  2. 基于springboot的果蔬配送商城
  3. 简介WAP最新版本:WAP 2.0(转)
  4. 锤子t1android驱动,锤子T1痛失安卓5.1!都是因为这?
  5. SEVERE: Could not contact [localhost:[8005]]. Tomcat may not be running.问题解决
  6. mysql临时表创建_MySQL临时表创建
  7. 第八章 定位网页元素
  8. 报错expected statement
  9. glc四驱软件测试,【图】独家官方答复 奔驰GLC四驱情况新进展_汽车之家
  10. iview 组件的用法