当前位置: 首页 > c>阅读正文

C语言之cURL配置与开发

2021.12.13 朱丰华 2533 次 留下评论 2906字

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

cURL是使用C语言开发的程序,所以C语言可以直接调用cURL。

Centos开发环境

centos搭建开发环境比较简单,注意curl在不同平台上使用方式是不同的

搭建C语言环境

centos7以上,一般主机系统都安装了yum

yum -y install gcc

执行以上命令即可安装gcc,也就是搭建了C语言开发环境

创建文件,并编辑

vi sayhello.c

写入如下内容

#include <stdio.h>
int main(){
	printf("Hello World!\n");
	return 0;
}

进行代码编译,得到输出文件,并命名为 sayhello.out

gcc sayhello.c -o sayhello.out

执行此文件,得到结果

./sayhello.out

搭建cURL

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl

安装git

使用yum安装git

yum -y install git

安装完毕后,输入版本号检测

git --version

下载与编译curl

从github上下载其源码:

git clone https://github.com/curl/curl.git

此时,会在当前目录下得到一个子目录(curl)

cd curl

接着,开始编译

./buildconf
./configure
sudo make install

此时,就编译安装完毕了, 接下来执行curl测试

输入帮助命令

curl -h

尝试抓取一个页面:

curl -L -X GET https://www.52dixiaowo.com

安装配置完毕

C程序调用cURL

创建一个test.c,尝试抓取百度首页,编写如下代码:

#include <stdio.h>
#include <stdlib.h>

#include <curl/curl.h>

int main(void)
{
    // 1.创建一个curl句柄
    CURL *curl = NULL;
    CURLcode res;
    
    // 2.初始化一个curl句柄
    curl = curl_easy_init();
    
    // 3.给句柄设置一些参数
    curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
    	
    // 4.将curl句柄向远程服务器提交
    res = curl_easy_perform(curl);
    if( res != CURLE_OK){
        printf("curl easy perform error res = %d",res);
        return 1;
    }
    // 5.初始化服务器的响应结果
    // 6.释放句柄空间
    curl_easy_cleanup(curl);
}

接下来,编译:

gcc test.c  -o test -Wall -l curl
ldd test

接下来,执行程序:

./test

执行后,将自动输出百度网页html文档

window开发环境

仍然从C语言开发环境开始搭建

windows搭建gcc

官方的64位gcc编译器叫MinGW-w64, 不过它和WinGW一样下载困难, 需要在线安装

这里, 我们使用 TDM-GCC, 虽然它并不是官方组织提供的, 但它是基于官方gcc再度开发的, 目前已开源至github, 且能够离线安装, 点击跳转至github下载页面

在github页面上左侧中间位置WinGW-w64 based下载即可, 或从本站备用下载tdm64-gcc-9.2.0.exe

下载完毕后, 双击安装, 选个位置安装即可, 安装界面选择Create, 再下一步根据实际情况选择32位或64位, 然后是默认下一步直到完成

安装完毕后, 打开cmd或powershell, 输入命令

gcc --help

如果正常显示帮助信息, 说明一切正常

测试C语言环境

创建一个代码文件, 叫 SayHello.c

#include <stdio.h>
int main(){
	printf("Hello World!");
	return 0;
}

接着, 在文件所在的目录下, 使用cmd执行gcc命令, 编译c文件为exe并指定名称

gcc SayHello.c -o Hello.exe

编译成功后得到一个Hello.exe文件, 再使用cmd执行Hello.exe即可执行

在windows环境下, 对于 .exe 文件在 cmd 下执行时, 可以省略后缀.

为何生成exe? 在windows中默认执行文件就是exe, 而linux下无后缀概念, 所以生成了.out文件, 本质上都是可执行, 只是在不同的系统中有不同的名称罢了.

windows搭建cURL

windows开发环境,需要下载windows版本的curl,否则在配合C语言程序时将遇到各种bug

从curl官方下载:curl for Windows,并且win32和win64不能混淆,这必须配合前面安装的gcc位数

下载压缩包后,解压即可,可以配置其bin目录作为环境变量。

接下来,测试curl安装情况

curl -h
curl www.baidu.com

如果正常,说明安装完毕。

C程序调用cURL

在使用C调用cURL时,比较费劲。

创建一个test.c文件,编写如下代码:(请注意curl.h绝对路径)

#include <stdio.h>
#include <stdlib.h>

// 引入curl.h绝对路径
#include <F:/curl-7.80.0-win64-mingw/include/curl/curl.h>

int main(void)
{
    // 1.创建一个curl句柄
    CURL *curl = NULL;
    CURLcode res;

    // 2.初始化一个curl句柄
    curl = curl_easy_init();

    // 3.给句柄设置一些参数
    curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");

    // 4.将curl句柄向远程服务器提交
    res = curl_easy_perform(curl);
    if( res != CURLE_OK){
        printf("curl easy perform error res = %d",res);
    }
    // 5.初始化服务器的响应结果
    // 6.释放句柄空间
    curl_easy_cleanup(curl);
    system("pause");
}

此时,你仍然不能直接编译该C程序为exe,先把curl中lib目录下的文件

  • liburl.a
  • liburl.la

把这2个文件,复制到gcc的lib目录下。

然后回到test.c文件所在的目录,打开cmd,执行以下代码:

gcc test.c -o test.exe -Wall -l libcurl

此时,会在当前目录下生成test.exe,尝试双击该exe则会报错:计算机丢失libcurl-x64.dll(假设64位)。

此时,你需要把curl中的bin目录下的libcurl-x64.dll复制到和exe的同级目录,再双击运行即可。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注