嵌入式Linux应用开发——基础篇(课程为百问网Linux零基础)

目录

1.环境搭建

2.如何烧写驱动

3.重新编写烧录整套系统

4.烧写系统

二、基础知识

 1、GCC的编译过程

2、头文件:

3、动态库和静态库

4、Makefile 

Makefile规则

Makefile的语法

Makefile 函数​编辑

Makefile实例 

三、C语言加强

 1.指针和变量​编辑

2.关键字

3.结构体指针

4.typedef的作用

5.函数指针

6.链表

课程链接


1.环境搭建

IT学习的第一步都是从环境的搭建开始:

1.首先是网络环境,配置VMWare使用双网(NAT和桥接模式),需要配置虚拟机的桥接IP、主机连接的网卡的IP以及开发板eth0的IP,通过主机、虚拟机、开发板三者之间的互判断网络是否配置成功。

设置开发板的IP可以通过修改/etc/network/interfaces进行永久修改,再输入/etc/init.d/S40network restart进行重启。也可以通过ifconfig eth0命令进行暂时修改,这方法在下次上电时IP会消失。

2.下载BSP,配置工具链,虚拟机中GCC编译生成的目标文件开发板是无法直接运行的,只有使用arm工具链编译生成的目标文件开发板才能识别。

2.如何烧写驱动

烧写驱动:
1.配置编译:内核,设备树,驱动(注意:编译内核需要较大的内存空间)
2.放到板子上
3.编译、测试驱动
将驱动放到ubuntu上后,首先修改makefile(vi make),指定你要使用的内核源码路径,保存后make,挂载网络文件系统,进入到驱动程序目录下(cd),装载驱动程序(insmod xx.ko),执行测试程序。

3.重新编写烧录整套系统

可以根据完全手册的第三篇6.5来操作

保险起见可以不加-j4

4.烧写系统

文档第三篇第七章

引申

以上都是跟着百问网韦东山老师的课程进行学习的,如果在学习linux过程中遇到什么困难欢迎讨论,可以看看韦老师的课程,会有收获的。

二、基础知识

 1、GCC的编译过程

个人认为,了解gcc的编译过程还是很有必要的,

代码的处理过程:预处理->编译->汇编->链接,那虚拟机是怎么通过一个gcc命令就将以上四个步骤完成的呢,可以在gcc命令后加上-v来观察这些步骤是如何进行的。

首先,是对.C文件的处理,cc1会将.C文件转换成.S文件,这个过程会涉及预处理(查找头文件和展开宏)和编译。

然后就是汇编了,as会将.C文件转换成.O文件。

最后就是链接,collect2会将生成的各类文件(如.O,.OS等文件)整合成一个APP。

对于语法错误是在汇编过程中发现的。

2、头文件:

1.#include中,用<>引起来的头文件将会去编译工具链指定的目录下寻找,而用“”引起来的头文件将会去当前目录下寻找。

在编译过程中遇到找不到头文件的情况,我们可以使用-I命令来指定头文件的路径。

3、动态库和静态库

当你在main.c文件里调用了其他.c文件的方法时,如果你只链接(-o)main.c文件将会报错。要解决错误你可以将main.c和调用方法的.c文件一起编译或者分开编译(-c),再统一链接(-o)。

但是当你在多个不同的.c文件中调用了他们的方法呢,这样输入就太麻烦了,这时候就需要利用到制作、使用动态库或静态库的方法。

1.静态库(.a)

2.动态库 (.so)

也可以直接gcc -o test mian.o libsub.so

4、Makefile 

Makefile规则

对于所有的程序文件,我们应该分别编译(也就是gcc -c -o),然后统一链接。

如果你第一次执行make命令

三个命令都将被执行,因为你所依赖的文件日期都比要生成的文件日期小

当你对b.c文件进行修改再执行make命令

如果你什么都没有修改再执行make命令

Makefile的语法

使用makefile想要执行的目标记得要指定,否者只会执行第一个

Makefile 函数

foreach函数:将list里的每一个变量var(这个名字是自己定的),转换成text的格式

Makefile实例 

三、C语言加强

 1.指针和变量

2.关键字

const 常量:不想让别人改我

extern:声明在外部定义的。

3.结构体指针

4.typedef的作用

代表一个结构体,起个别名

5.函数指针

在*和函数名之间加个括号

6.链表

链表是一种动态的数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。

单向链表中,每个节点只有一个指向下一个节点的指针,只能从前往后遍历。

双向链表的节点则包含指向前后两个节点的指针,既可以向前也可以向后遍历,更加灵活。

循环链表的尾节点指向头节点,形成一个环形结构。

课程链接

【直播公开课】韦东山老师嵌入式C语言加强,全天8小时直播,吐血整理可以分集观看!_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1VM4y137Pm/?spm_id_from=333.337.search-card.all.click

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值