嵌入式Linux应用基础学习(2)— 第一个HelloWorld程序
STM32MP157应用基础学习(2)— 第一个HelloWorld程序一、添加NFS目录新建app/stm32/01_hello目录,然后将app/stm32/添加到NFS的目录下接着在开发板上输入如下命令,挂载nfs的目录mount -t nfs -o nolock,vers=3 192.168.31.141:/home/william/app/stm32 /mnt进入/mnt目录可以看到01
嵌入式Linux应用基础学习(2)— 第一个HelloWorld程序
一、添加NFS目录
新建app/stm32/01_hello目录,然后将app/stm32/添加到NFS的目录下
接着在开发板上输入如下命令,挂载nfs的目录
mount -t nfs -o nolock,vers=3 192.168.31.141:/home/william/app/stm32 /mnt
进入/mnt目录可以看到01_hello文件夹啊,表示挂在成功
二、编写程序
在01_hello/目录下新建mian.c文件,编写内容如下
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
使用gcc编译运行如下所示
三、交叉编译
使用交叉编译工具链进行编译
然后在开发板上运行如下所示
我们尝试运行使用gcc编译出来的可执行文件,可以看到,无法运行
四、头文件包含路径
我们使用如下命令来查看一下main.c文件的依赖
arm-linux-gnueabihf-gcc -M main.c
可以看到如下依赖文件,这些都是arm-linux-gnueabihf-gcc编译工具链的include头文件目录下的文件,
在编译时,会在这些目录下寻找头文件
然后我们在当前目录下新建一个test.h文件,然后修改main.c文件如下所示
#include <stdio.h>
#include <test.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
然后编译,可以看到,编译失败,因为test.h文件并没有在编译器的include目录中,所以会提示找不到文件
这里我们可以加入-I参数,通知编译器添加另外的头文件路径,如下所示,编译成功
另外,也可以将<>包含头文件修改为""包含头文件,如下所示,编译成功,这是因为使用""时,编译器也会在当前目录下寻找头文件
五、库文件路径
同样的,相对于的库文件也是在交叉编译器的目录下,我们进入该目录,使用find -name lib目录找找一下库文件的存放地址如下
我们进入其中一个目录可以看到许多 so 文件,
如果要指定自己的库文件库文件这么办呢?有如下两种方法
- 编译时,加上“
-L <库文件目录>”这样的选项,用来指定库目录,列如当前目录“-L./”; - 编译时,加上“
-labc”这样的选项,用来指定库文件libabc.so
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)