本人linux还没入门,这个只是学习笔记,方便自己查阅。有不对的地方,请大家不吝赐教。
这里使用linux自带的gcc编译器做练习,演示,学习,当然我们的最终目标是编译东山哪吒开发板(D1-H)app应用程序。
从windows的资源浏览器进入ubuntu-18.04的虚拟硬盘:地址栏输入 \\wsl$
然后新建一个文件夹:
在文件夹里面新建一个txt文件。如果成功,说明具备读写权限。这样我们可以非常方便的操作linux的文件。
我的记性差,老忘记linux命令,加上懒,键盘输入不够快,在linux操作非常痛苦。
这里需要的是gcc编译器,make。
在vscode的插件管理中心搜索wsl(我这里已经安装好,所以没有安装的按键):
安装完毕后,在第一步的刚刚新建的文件夹 test 里面再新建一个文件夹,把我的测试代码(见文章底部)放进去。
在ubuntu进入 /home/hwd/test/hello2,并输入命令(code 和小数点中间有空格):
code .
我还没有习惯使用命令行编译程序,非常渴望有可视化的编译工具,比较依赖鼠标。
vscode会根据工程目录下的文件夹 .vscode 里面的 文件 tasks.json 生成可视化命令。这里的 tasks.json 非常简单:
{
"tasks": [
{
"type": "shell",//任务类型
"label": "make",//任务名称(在vscode看到的名称)
"command": "make",//命令行:编译器(可执行文件)的路径
}
],
"version": "2.0.0"
}
这里用一个最简单的Makefile文件:
CROSS_COMPILE = /usr/bin/
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
test : main.c
$(CC) -o test main.c
测试helloword(应该是helloworld),反正韦东山老师的例程是这样的:
#include
int main(int argc, char* argv[])
{
printf("hello2word!\n");
return 0;
}
第一次会弹出一个窗口,选择“从不扫描此任务的任务输出”,下次就不会弹出这个窗口:
此时,如果c代码没有错误,就会正常输出:
根据提示,按任意键关闭终端。
改动一下打印输出:
printf("hello2word!123\n");
把Makefile的CROSS_COMPILE改成交叉编译工具链的路径:
CROSS_COMPILE = /home/hwd/eLinuxCore_dongshannezhastu/toolchain/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-
保存,点击 终端->运行任务->make ,编译后,这个文件应该是无法在pc上面运行的,我们使用file命令查看一下信息:
root@SK-JNTINRTMRDZW:/home/hwd/test/hello# file test
test: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64xthead-lp64d.so.1, for GNU/Linux 4.15.0, with debug_info, not stripped
root@SK-JNTINRTMRDZW:/home/hwd/test/hello#
编译完成后,vscode界面的终端就是ubuntu的终端:
这个程序要做开发板上面运行,具体运行过程参考下篇文章《linux笔记(3):东山哪吒STU开发板(全志D-1H)开箱初体验helloworld》。
链接:https://pan.baidu.com/s/1A0L9msimWU8x58HRwbQ_8Q?pwd=f0ho
提取码:f0ho