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的同级目录,再双击运行即可。
本篇完,还有疑问?留下评论吧