拿到DUO已经一周多了,按照论坛里大神的教程开始上手DUO。
本人环境:ubuntu20.04.
首先当然是helloworld编写了!
具体过程如下:
1、关于编译工具,官方提供的host-tools中有3种工具,通过在DUO系统中执行命令可以查看系统编译工具信息。
可以看到官方DUO的系统镜像使用的是musl-gcc工具。
2、把host-tools中的工具链添加到ubuntu系统的PATH环境变量中。通过修改~/.bashrc文件,增加环境变量。在bashrc文件末尾添加如下:
export PATH=/home/xxx/host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH
3、修改添加完成以后,需要终端中重新source一下bashrc文件,然后渐入riscv64之后tab,可以看到gcc工具链已经安装完成。
或者也可以echo $PATH,查看工具链路径是否已经添加进去。
4、确认上述工具安装完毕以后就可以愉快的开始编译helloworld啦!
#include<stdio.h>
void main()
{
printf("hello world!\r\n");
}
这里使用cmake完成编译。需要建立CMakeLists.txt:
PROJECT(HELLO)
SET(SRC_LIST hello.c)
SET(CMAKE_SYSTEM_NAME LINUX)
SET(CMAKE_C_COMPILER riscv64-unknown-linux-musl-gcc)
SET(CMAKE_CXX_COMPILER riscv64-unkown-linux-musl-g++)
ADD_EXECUTABLE(hello ${SRC_LIST})
然后执行cmake . 生成makefile。之后执行make,生成hello可行文件。
通过scp hello root@192.168.42.1:/root/ 将hello程序拷贝到DUO上,之后./hello即可执行看到结果。
注意:因为这里是动态连接的文件,除了拷贝这个hello文件以外,还需要拷贝动态连接库即.so文件到DUO的lib库内,否则程序会出现not found的错误。
如何查看用的什么库呢?可以使用file命令查看。
可以看到hello程序执行需要ld-musl-riscv64xthead.so.1,这个文件在host-tools中,可以搜索找到后然后拷贝到DUO的lib文件夹下。
至此最简单的helloworld就编译成功了。
上面我们看到拷贝文件都需要执行scp命令行,其实完全可以编译vsftp,把DUO编程ftp服务器,然后就可以直观的上传和下载文件到DUO了。
这里使用的vsftp3.0.3版本。主要过程如下:
1、修改Makefile:
这里主要修改了交叉编译工具链以及连接参数,可以参考上图。
2、使用musl工具链编译可能报错,这里需要自行添加定义:
#define WTMPX_FILE "/var/log/wtmp"
3、make编译,成功的话会生成vsftpd 及vsftpd.conf文件。
4、还得使用scp命令把vsftpd 和conf文件拷贝到DUO上。其中vsftpd存放在/usr/sbin/, vsftpd.conf文件存放到/etc/中。
5、根据需要对vsftpd.conf文件做一些配置。具体可以网上查询。
6、 可以reboot一下DUO,然后通过执行vsftpd &,让服务器程序在后台运行。当然也添加自启动。
7、最后运行filezilla,输入相关参数后连接ftp服务器。
至此就可以愉快的使用ftp客户端来传送文件了。