原子c语言
A. c语言中的指针类型属于原子类型还是结构类型
这个要看什么指针
如果是char *就是原子类型的
结构体的指针就是结构类型
但是要注意各种类型的指针变量所占内存一样。
B. 正点原子嵌入式linux驱动开发——Linux C编程入门
这一章主要利用Ubuntu自带的vi编辑器进行C语言代码编写。对原理不感兴趣的读者,可以自行搜索并使用VSCode等编辑器进行操作。
首先,创建一个名为"C_Program"的文件夹,用于管理所有代码。每次编写的代码放在"C_Program"文件夹下的子文件夹中,便于管理。
在"/etc/vim/vimrc"文件中,设置tab为4个空格,并启用行号显示,通过在文件最后两行添加相应的代码实现。
设置完成后的vi编辑器,用于编写经典代码"Hello World!"。创建名为"main.c"的文件,内容如下:
使用"cat"命令查看内容,如图所示。
进行代码编译。Ubuntu下的C语言编译器为GCC,若Ubuntu18未安装GCC工具,需手动安装gcc、g++和make等工具。通过安装"build-essential"软件包即可。安装完成后,使用命令查看,如图所示。
安装成功后,GCC编译器版本为7.5.0,适用于x86架构CPU。对于ARM架构,需要使用针对ARM的GCC编译器,即交叉编译器。需记住不同架构下的GCC编译器不同。
使用GCC编译器编译"main.c"文件,GCC命令模式下输入命令,编译完成后生成可执行文件"a.out",使用命令"./a.out"执行,如图所示。
可自定义命名生成的可执行文件,在使用gcc命令时加上"-o"指定文件名,如编译"main.c"后生成名为"main"的可执行文件,操作如图所示。
GCC编译器命令格式如下,主要选项如下:
编写示例代码演示GCC错误警告,代码中有两处错误:在第8行少写了一个分号;第9行中的printf语句错误。编译后,GCC会给出错误提示,根据提示修改代码即可。
GCC编译流程包括预处理、编译、汇编和链接,预处理展开头文件、替换宏、解析条件编译;编译将预处理后的代码编译成汇编代码;汇编将汇编语言编译成二进制目标文件;链接将多个目标文件链接成可执行文件。
使用make命令进行编译,通过一个Makefile文件描述编译哪些源码文件、如何编译。Makefile跟脚本文件类似,执行系统命令,使用make命令即可自动完成工程编译,提高开发效率。在Linux下使用最多的GCC编译器,需要自行编写Makefile。
创建名为"Makefile"的文件,描述工程中需要编译的源码文件和依赖关系。在命令行输入"make"即可编译工程,可能遇到编译失败的情况。修改Makefile,确保在修改文件后能正确编译。Makefile中规则描述目标文件及其依赖文件,命令执行更新。
总结,Makefile中规则定义目标文件及其依赖文件,命令执行更新。Makefile的"终极目标"是Makefile文件中第一个规则的目标,没有指定目标时,默认为目标。Makefile变量用于简化代码,变量赋值使用"="或"==","=="只使用已定义的值。模式规则用于编译所有以特定后缀结尾的文件,自动化变量用于简化命令执行。Makefile中的伪目标不生成文件,用于避免与实际文件冲突。Makefile支持条件判断和函数调用,实现逻辑控制和字符串处理。
本章节介绍了在Linux环境下使用GCC和Makefile进行C语言代码的编译和执行。学习后可直接进行实践,实践过程中会更直观地理解操作流程。基础了解即可,具体应用需在实践中深入体会。