嵌入式linux系统下curl的编译和使用

cURL是一个利用URL语法在命令行下工作的文件传输工具,cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP等等,可以参考cURL文档 https://curl.haxx.se/docs/。

下载地址:

https://curl.haxx.se/download.html/curl-7.71.1.tar.gz

编译方法:

cd curl
./configure --prefix= --disable-shared --enable-static   --enable-http  --enable-ftp --enable-file  --disable-pop3  --disable-imap   --disable-smtp       --disable-gopher  --disable-proxy  --disable-ntlm-wb --disable-sspi --without-libidn --without-ssl --without-librtmp --without-gnutls --without-nss --without-libssh2 --without-zlib --without-winidn --disable-rtsp --disable-ldap --disable-ldaps  --without-darwinssl      --without-PACKAGE  --without-ssl     --without-gnutls  --without-polarssl  --without-cyassl   --without-nss  --without-axtls    --without-ca-path  --without-winssl  --without-libmetalink  --without-libssh2   --without-winidn   --without-libidn  --enable-ipv6 CC=aarch64-himix100-linux-gcc CPP=aarch64-himix100-linux-cpp --host=arm
make

测试

#include <curl/curl.h>

int main() {
    printf("%s\n", curl_version());
    return 0;
}

makefile

char1:main
main:
	aarch64-himix100-linux-gcc *.c -o main -I../include -L../lib/.libs -lcurl
clean:
	rm main

上传下载例子

上传

curl ftp://192.168.0.100/ -u root:passwd -T aa.txt

下载

curl ftp://192.168.0.100/aa.txt -u root:passwd -o aa.txt

curl命令语法及参数选项

curl [options...] <url>

-a/--append	                            #上传文件时,附加到目标文件
-A/--user-agent <string>	            #设置用户代理发送给服务器
-anyauth	                            #可以使用“任何”身份验证方法
-b/--cookie <name=string/file>	            #cookie字符串或文件读取位置
     --basic	                            #使用HTTP基本验证
-B/--use-ascii	                            #使用ASCII /文本传输
-c/--cookie-jar <file>	                    #操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>	            #断点续转
-d/--data <data>	                    #HTTP POST方式传送数据
     --data-ascii <data>	            #以ascii的方式post数据
     --data-binary <data>	            #以二进制的方式post数据
     --negotiate	                    #使用HTTP身份验证
     --digest	                            #使用数字身份验证
     --disable-eprt	                    #禁止使用EPRT或LPRT
     --disable-epsv	                    #禁止使用EPSV
-D/--dump-header <file>	                    #把header信息写入到该文件中
     --egd-file <file>	                    #为随机数据(SSL)设置EGD socket路径
     --tcp-nodelay	                    #使用TCP_NODELAY选项
-e/--referer	                            #来源网址
-E/--cert <cert[:passwd]>	            #客户端证书文件和密码 (SSL)
     --cert-type <type>	                    #证书文件类型 (DER/PEM/ENG) (SSL)
     --key <key>	                    #私钥文件名 (SSL)
     --key-type <type>	                    #私钥文件类型 (DER/PEM/ENG) (SSL)
     --pass <pass>	                    #私钥密码 (SSL)
     --engine <eng>	                    #加密引擎使用 (SSL). "--engine list" for list
     --cacert <file>	                    #CA证书 (SSL)
     --capath <directory>	            #CA目录 (made using c_rehash) to verify peer against (SSL)
     --ciphers <list>	                    #SSL密码
     --compressed	                    #要求返回是压缩的形势 (using deflate or gzip)
     --connect-timeout <seconds>	    #设置最大请求时间
     --create-dirs	                    #建立本地目录的目录层次结构
     --crlf	                            #上传是把LF转变成CRLF
-f/--fail	                            #连接失败时不显示http错误
     --ftp-create-dirs	                    #如果远程目录不存在,创建远程目录
     --ftp-method [multicwd/nocwd/singlecwd]#控制CWD的使用
     --ftp-pasv	                            #使用 PASV/EPSV 代替端口
     --ftp-skip-pasv-ip	                    #使用PASV的时候,忽略该IP地址
     --ftp-ssl	                            #尝试用 SSL/TLS 来进行ftp数据传输
     --ftp-ssl-reqd	                    #要求用 SSL/TLS 来进行ftp数据传输
-F/--form <name=content>	            #模拟http表单提交数据
     --form-string <name=string>	    #模拟http表单提交数据
-g/--globoff	                            #禁用网址序列和范围使用{}和[]
-G/--get	                            #以get的方式来发送数据
-H/--header <line>	                    #自定义头信息传递给服务器
     --ignore-content-length	            #忽略的HTTP头信息的长度
-i/--include	                            #输出时包括protocol头信息
-I/--head	                            #只显示请求头信息
-j/--junk-session-cookies	            #读取文件进忽略session cookie
     --interface <interface>	            #使用指定网络接口/地址
     --krb4 <level>	                    #使用指定安全级别的krb4
-k/--insecure	                            #允许不使用证书到SSL站点
-K/--config	                            #指定的配置文件读取
-l/--list-only	                            #列出ftp目录下的文件名称
     --limit-rate <rate>	            #设置传输速度
     --local-port<NUM>	                    #强制使用本地端口号
-m/--max-time <seconds>	                    #设置最大传输时间
     --max-redirs <num>	                    #设置最大读取的目录数
     --max-filesize <bytes>	            #设置最大下载的文件总量
-M/--manual	                            #显示全手动
-n/--netrc	                            #从netrc文件中读取用户名和密码
     --netrc-optional	                    #使用 .netrc 或者 URL来覆盖-n
     --ntlm	                            #使用 HTTP NTLM 身份验证
-N/--no-buffer	                            #禁用缓冲输出
-o/--output	                            #把输出写到该文件中
-O/--remote-name	                    #把输出写到该文件中,保留远程文件的文件名
-p/--proxytunnel	                    #使用HTTP代理
     --proxy-anyauth	                    #选择任一代理身份验证方法
     --proxy-basic	                    #在代理上使用基本身份验证
     --proxy-digest	                    #在代理上使用数字身份验证
     --proxy-ntlm	                    #在代理上使用ntlm身份验证
-P/--ftp-port <address>	                    #使用端口地址,而不是使用PASV
-q	                                    #作为第一个参数,关闭 .curlrc
-Q/--quote <cmd>	                    #文件传输前,发送命令到服务器
-r/--range <range>	                    #检索来自HTTP/1.1或FTP服务器字节范围
--range-file	                            #读取(SSL)的随机文件
-R/--remote-time	                    #在本地生成文件时,保留远程文件时间
     --retry <num>	                    #传输出现问题时,重试的次数
     --retry-delay <seconds>	            #传输出现问题时,设置重试间隔时间
     --retry-max-time <seconds>	            #传输出现问题时,设置最大重试时间
-s/--silent	                            #静默模式。不输出任何东西
-S/--show-error	                            #显示错误
     --socks4 <host[:port]>	            #用socks4代理给定主机和端口
     --socks5 <host[:port]>	            #用socks5代理给定主机和端口
-t/--telnet-option <OPT=val>	            #Telnet选项设置
     --trace <file>	                    #对指定文件进行debug
     --trace-ascii <file>	            #Like --跟踪但没有hex输出
     --trace-time	                    #跟踪/详细输出时,添加时间戳
-T/--upload-file <file>	                    #上传文件
     --url <URL>	                    #Spet URL to work with
-u/--user <user[:password]>	            #设置服务器的用户和密码
-U/--proxy-user <user[:password]>	    #设置代理用户名和密码
-w/--write-out [format]	                    #什么输出完成后
-x/--proxy <host[:port]>	            #在给定的端口上使用HTTP代理
-X/--request <command>	                    #指定什么命令
-y/--speed-time	                            #放弃限速所要的时间,默认为30
-Y/--speed-limit	                    #停止传输速度的限制,速度时间

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Linux使用curl进行交叉编译,首先需要安装相关的交叉编译工具链。根据目标平台选择适当的工具链,如ARM、MIPS等。然后,下载curl的源代码包并解压。 进入curl源码目录后,可以配置编译参数。使用./configure命令,通过指定交叉编译工具链的位置和参数,来进行交叉编译的配置。例如: ``` ./configure --host=交叉编译工具链的前缀 ``` 其,"--host"参数后面跟的是经过交叉编译工具链前缀,如arm-linux-gnueabi、mips-linux-gnu等。这样配置之后,就可以使用交叉编译器来编译curl了。 配置完成后,运行make命令进行编译编译完成后,即生成了交叉编译后的curl可执行文件。 最后,将生成的可执行文件拷贝到目标平台上进行运行测试即可。 总结起来,通过安装交叉编译工具链、配置编译参数,以及使用make命令进行编译,就可以在Linux下完成curl的交叉编译。 ### 回答2: 在Linux系统下,交叉编译是指在一台主机上用特定工具链编译生成适用于另一种主机架构的可执行程序。对于curlLinux下的交叉编译,以下是一些步骤: 首先,我们需要设置交叉编译环境。这包括安装交叉编译工具链和交叉编译的目标架构的头文件与库。 然后,我们需要下载curl的源代码。可以从curl的官方网站下载最新版本的源代码。 接下来,我们需要根据交叉编译工具链的要求配置curl编译选项。这可能涉及到指定目标架构、链接选项、头文件和库的路径等。 然后,我们可以运行configure命令来生成适用于交叉编译环境的Makefile。configure命令会根据主机架构、编译选项等自动配置Makefile。 接着,我们可以运行make命令进行编译。make命令会根据Makefile的指令来编译生成可执行程序。在编译过程,可能会出现一些依赖问题需要解决,比如缺少某些库文件。 最后,我们可以运行make install命令将编译生成的可执行程序安装到目标机器。 需要注意的是,根据交叉编译工具链和目标架构的不同,具体的交叉编译过程可能会有所差异。因此,在进行交叉编译前,建议阅读相关文档或参考其他资源,以便更好地理解和掌握交叉编译的步骤和注意事项。 ### 回答3: 在Linux下进行curl交叉编译,需要以下几个步骤: 1. 安装交叉编译工具链:首先需要在Linux系统安装适合目标平台的交叉编译工具链。根据目标平台的不同,可以选择不同的工具链,例如gcc、g++等。 2. 下载curl源代码:从curl的官方网站上下载最新的curl源代码包,并解压到本地。 3. 配置交叉编译环境:打开终端,进入解压后的curl源代码目录下,执行以下命令: ``` export CC=交叉编译器路径 export CXX=交叉编译器路径 export AR=交叉编译器路径-ar export RANLIB=交叉编译器路径-ranlib export LD=交叉编译器路径-ld export STRIP=交叉编译器路径-strip export CPPFLAGS="-I交叉编译器路径/include" export LDFLAGS="-L交叉编译器路径/lib" ``` 替换上述命令的“交叉编译器路径”为实际的交叉编译工具链路径。 4. 配置编译选项:执行以下命令配置编译选项: ``` ./configure --host=目标平台 --prefix=安装路径 ``` 其,目标平台是指要将curl交叉编译到的目标硬件平台,安装路径是指将编译后的curl安装到的目录。根据实际的需求进行配置。 5. 编译和安装:执行以下命令开始编译和安装: ``` make make install ``` 编译过程可能需要一些时间,等待编译完成后,curl将被安装到指定的安装路径下。 通过以上步骤,我们可以在Linux下成功进行curl的交叉编译。在配置交叉编译环境时,需要注意交叉编译器的选择和路径的配置,确保编译工具链已正确安装,并设置正确的编译选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值