一、hello测试程序编写
💦我们使用 Linux 的目的就是运行我们自己的软件,我们编译的应用软件一般都使用动态库,使用动态库的话应用软件体积就很小,缺点是提供库文件,库文件我们已经添加到了根文件系统中。我们编写一个小小的测试软件来测试一下库文件是否工作正常,在根文件系统下创建一个名为“drivers”的文件夹, 编写Linux驱动的时候都可放到这个文件里边。
💦hello.c文件内容如下:
#include <stdio.h>
int main(void)
{
while(1) {
printf("hello world!\r\n");
sleep(2);
}
return 0;
}
💦编译hello.c文件
因为我们是要在 ARM 芯片上运行的,所以要用交叉编译器去编译,也就是使用 arm-linux-gnueabihf-gcc 编译,命令如下:
arm-linux-gnueabihf-gcc hello.c -o hello
💦查看编译后的文件是否为arm使用,指令如下:
file hello
💦hello 是个 32 位的 LSB 可执行文件,ARM 架构的,并且是动态链接的,所以编译是没有问题的。
在开发板上,打开drivers,执行hello文件,可以正常运行,说明根文件系统没有问题。
二、程序后台运行
💦在运行hello执行文件运行时,因其占用显示终端,导致无法在进行终端操作,结束ctrl+c,有没有办法让其在后台运行呢
1.在后台运行方法
💦软件名称+取址符:xxx &
./hello &
💦可以看到在后台运行后,输入其他指令也是可以运行的。
💦关闭后台运行,输入命令ps,查看程序运行进程PID,类似于windows中的任务管理器,输入kiil -9 PID值。
比如kill -9 77 杀死hello进程。
2.中文显示测试
💦测试方法:
创建中文目录,在中文目录下在创建中文文件。
💦相应测试目录,文档,内容已经创建,在Ubuntu系统中可以正常显示。
💦所使用的终端显示软件要设置成UTF-8编码
3.开机自动启动测试
💦进入根文件系统的时候会运行/etc/init.d/rcS 这个 shell 脚本,因此我们可以在这个脚本里面添加自启动相关内容。