物联网的时代怎么能离开一系列的网络应用,做为物联网操作系统本篇文章以移植wget & cURL为例来说明一些GNU应用如何移植到rt-smart/树莓派上。
RT-Thread Smart在用户态是以全POSIX的方式来兼容已有的UNIX应用程序,选择的是musl libc,同时对其中的一些底层做相应的对接和适配,例如UNIX中常见的fork/vfork,pipe系统调用,而对于pthreads,musl libc中则大量的用到了futex,也在smart上做了对接。
对于网络客户端应用,这里选择的是wget和cURL两个开源网络应用:
wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。"wget" 这个名称来源于 “World Wide Web” 与 “get” 的结合。
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
移植前的准备
在移植之前,我们需要先获得wget和curl的源代码。我们在rt-smart sdk的userapps目录下创建一个gnu-apps目录,下载对应版本的代码并进行解压:
1~/workspace/rtthread-smart/userapps$ mkdir gnu-apps
2
3# 下载wget及cURL,并解压到wget和cURL目录下
4~/workspace/rtthread-smart/userapps$ cd gnu-apps
5~/workspace/rtthread-smart/userapps$ mkdir curl
6~/workspace/rtthread-smart/userapps$ tar jxf curl-7.76.1.tar.bz2
7
8~/workspace/rtthread-smart/userapps$ mkdir wget
9~/workspace/rtthread-smart/userapps$ tar zxf wget-1.21.1.tar.gz