一、编写应用程序
如下图所示,在
Ubuntu
下建立一个专门的文件夹存放 “
Linux
系统编程” 中的源码和程序。
在目录 “
/home
”下,在
root
用户权限下,使用命令 “
mkdir linuxsystemcode
” 新建目录“
linsyscode ”。
然后,如下图所示,使用命令
“ cd linsyscode/ ”
进入目录
“ linsyscode ”
,使用命令
“ mkdir
helloworld ”
,新建
“ helloworld ”
目录,然后使用命令
“ cd helloworld/ ”
进入新建的目录。
代码的编辑使用编辑器 vi 编辑器或者 vim 编辑器,将 “ helloworld.c ” 拷贝到前面新建的 “ helloworld ”目录下,使用命令 “
vi helloworld.c ” 或者 “
vim helloworld.c ”命令,如下图所示。
说明:Linux 系统编程中,在后面的代码如果没有特殊说明,都会在目录“/home/linsyscode”下新建
目录,然后在其中存放代码。
二、交叉编译 hello world
交叉编译 的目的是如何编译可以在开发板上运行的应用。
首先要确定一下环境变量,如下图所示,使用
“ cd ”
命令回到根目录,然后使用命令
“ vim .bashrc ”打开环境变量文件。
如下图所示,进入最底行,这里使用的和编译内核的编译器一样就可以。
使用命令
“ cd /home/linsyscode/helloworld/ ”
回到
“ /home/linsyscode/helloworld ”目录中,再使用下述命令使用命令
,将当前目录下的
C 文件 “ helloworld.c ”
编译成可在开发板运行的可执行文件
“helloworld”
。
arm-none-linux-gnueabi-gcc -o helloworld helloworld.c -static
说明:“arm-none-linux-gnueabi-gcc ”表示使用 arm 编译器,对应 iTop4412 开发板;
“-static”表示将库也编译进去。
如下图所示,编译成功,生成
“helloworld”
文件。
三、将 helloworld 编译进文件系统
当编译生成helloworld文件后,可以将程序直接编译进文件系统,
如下图所示,首先返回到/home目录下,再使用 cp
命令将编译好的
helloworld
程序复制到
system
下的
bin
目录,命令如下所示。
cp -r linsyscode/helloworld/helloworld minilinux/system/bin/
然后编译
system
。
四、重新编译system镜像
参照博文 :Linux系统编程之制作最小 linux 文件系统-CSDN博客 https://blog.csdn.net/Eva20192020/article/details/134361209?spm=1001.2014.3001.5502”
中的第四步完成编译工具的安装。
安装好打包编译工具 “ make_ext4fs ” 之后。进入 “ /home/minilinux/ ” 目录, 再使用下述命令进行system的编译,如下图所示。
make_ext4fs -s -l 314572800 -a root -L linux system.img system
从而生成 system.img 文件系统镜像,编译成功后重新烧写 “ system.img ” 文件系统。
五、开发板上最小Linux系统运行应用程序
启动开发板,直到启动最小系统,回车,如下图所示。
查看bin目录下是否有可执行helloworld文件,如下图。
则使用命令 ”
chmod 777 /bin/helloworld ” 修改权限 。如下图。
然后
使用命令
“ ./bin/helloworld ”
运行
helloworld 程序,如下图所示。运行之后可以看到应用程序运行后的有打印信息
。
六、U盘运行应用程序
本节介绍如何利用 U 盘将可执行程序拷贝到开发板并且在开发板上运行。
先将可执行文件
helloworld
拷贝到
U
盘,启动开发板,一直到启动完最小系统,如下图所示。
回车,如下图所示,
如下图,可以识别U盘,并且知道盘符号为sda1。
如果文件系统第一次启动的时候没有/mnt/udisk 目录,所以需要使用命令 “ mkdir /mnt/udisk ” 新建。如下图。
然后加载 u 盘,插入 u 盘的时候,被识别为 sda1,使用命令 “ mount /dev/sda1 /mnt/udisk ” 加载 u 盘, 如下图所示。
这个时候可以直接在 U 盘中运行,如下图所示,使用命令 “ chmod 777 /mnt/udisk/helloworld ”修改权限。
然后使用命令 “ ./mnt/udisk/helloworld ” 运行 helloworld 程序,如下图所示。