linux环境下libcurl应用总结,实现FTP文件上传

  • Post author:
  • Post category:linux




概述

libcurl是一个免费的C语言开发库,支持HTTP、FTP、Telnet、SFTP等URL传输。例如实现FTP文件上传,使用该库函数来开发非常的便捷可靠。



libcurl的移植

libcurl库源码下载

官网

地址:https://curl.se/download.html

下载源码:curl-7.79.1.tar.gz

1.解压源码:tar -xzvf curl-7.79.1.tar.gz

2.运行配置文件:./configure –prefix=/home/boyee/b_libcurl –host=arm-linux CC=arm-linux-gcc CXX=arm-linux-gcc –with-wolfssl

–prefix:指定安装目录,编译后生成的文件放在此目录,必须是绝对路径;

–host: 指定交叉编译工具, 和编译 Linux 的编译器一致

CC: arm平台所使用的交叉编译工具

–with-wolfssl:编译需要带这个参数,否则编译可能会出错。

3.编译:执行make过后,再执行make install。

4.将/home/boyee/b_libcurl/bin拷贝到开发板的/bin目录下,将/home/boyee/b_libcurl/lib拷贝到开发板的/lib目录下。

5.执行curl –version,查看版本号。

移植完成。



libcurl实现FTP上传

下载的源码里面有很多示例,例如FTP上文件的代码:curl-7.79.1\docs\examples\ftpupload.c

实验目的:采用FileZilla server搭建FTP服务器,编译ftpupload.c源码,实现FTP上传文件到FTP服务器功能。



FTP服务器搭建

  1. 下载绿色免费的FileZilla Server软件搭建FTP服务器:

    https://download.csdn.net/download/fengweibo112/33592377

  2. 搭建一个不需要登录的FTP服务器。

1.以管理员身份运行”FileZilla server.exe”,开启FTP服务器

2.以管理员身份运行”FileZilla Server Interface.exe”,配置FTP服务器,配置方法如下图:连接到服务器默认配置,点击确认①,创建anonymous用户,设置共享目录和权限。

在这里插入图片描述

  1. 确认FTP服务器可以正常登录访问

    在这里插入图片描述



ftpupload.c编译验证

ftpupload.c文件需要修改两个部分,1.修改FTP的服务器地址,2.修改需要上传文件的绝对路径:

在这里插入图片描述

交叉编译代码执行指令如下:

arm-linux-gcc -I /home/boyee/b_libcurl/include/ -L /home/boyee/b_libcurl/lib/ -o ftpupload ftpupload.c -lcurl -ldl

-I 指定了 curl.h 所在路径,

-L 指定 curl的 lib 库路径,即libcurl.a所在目录。

-o 编译生成的文件名为ftpupload,ftpupload.c是源程序文件;

-lcurl指明要链接静态库文件libcurl.a。

将生成的ftpupload上传到开发板,chmod修改权限。

执行结果如下:

# ./ftpupload 
Local file size: 737 bytes.
*** We read 737 bytes from file
#

执行过后,在服务器上可以查看到已上传了”renamed-and-fine.txt”文件,该文件内容即为上传的文件。

在这里插入图片描述



API使用

curl_easy_setopt

设置各种curl参数

curl_easy_perform

执行curl操作

curl_easy_getinfo

未完待续…



常见问题

问题:curl安装时出现:configure: error: select TLS backend(s) or disable TLS with –without-ssl.

解决方法:末尾加上参数 –with-wolfssl即可



版权声明:本文为fengweibo112原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。