1. GNU C 编译器
2. GNU make 项目管理工具
3. 创建和使用函数库
4. GNU C 函数库(glibc)
1.GNU C 编译器
使用 c语言 编写的代码,运行前必须经过编译和链接,最终生成可执行程序。(编译,编译语言源代码;链接,链接引用的函数库。)这个孕育的过程,需要一些工具、一些函数库,其中这个工具就叫做“编译器”。
GNU C 编译器叫做 gcc,gcc包含了预处理器、编译器、汇编器、链接器等。语法格式:
编译hello world为例:
2.GNU make 项目管理工具
项目中,常采用模块化开发,将系统分解为多个模块,每个模块完成特定的功能。如此分了模块,便会出现多个源代码文件。在调试阶段,可能会反复编译链接,会出现繁琐的重复操作。于是,make 应运而生,来代替手动的繁琐重复操作。make 还可以规避编译未修改源代码的文件。
2.1.格式
make 工具可以从文本文件读取编译规则,每条规则的语法如下:
每条规则由:依赖关系和命令两部分组成。所有的命令开头需要有个tab,以#开头表示注释的内容。
make 命令的语法:
规则文件 Makefile 举例:
2.2.变量
变量的定义和引用,跟 Shell 中一样。
GNU make 预定义了一些变量,在 Makefile 文件中可以直接使用,也可以对这些变量进行重新定义。
2.3.通配符
允许在规则中使用通配符,支持三种通配符:“*”、“%”、“?”、“[]”。例子见2.4节
2.4.规则
常见规则
2.5.搜索路径
处理的文件较多时,目录结构较复杂。当需要推导文件的依赖关系时,又需要指明路径。make 的解决方法是,提供一个供搜索的路径,不必指明目录信息。设置一个 VPATH 变量,若当前目录没有找到文件时,就去搜索该变量的路径信息。
2.6.显示命令
打印一些信息到屏幕……
2.7.保守赋值
Makefile 文件中
3.创建和使用函数库
函数库可分为两种类型,静态库和共享库。函数库是由某些目标文件(.o)组成的,静态库命名为 libxxx.a,动态库常命名为 libxxx.so。编译器在链接阶段,会把静态库嵌入至可执行文件中,会把动态库的“快捷方式”存储到可执行文件中。
3.1.静态库
静态库有 ar 工具创建。ar 命令语法如下:
写两个c源程序,分别为一个函数,制作一个静态库。
使用该静态库时,先定义静态库的应用接口
写一个主程序,调用刚刚生成的库 libmy.a 。
3.2.动态库
创建共享库(动态库),使用gcc命令创建。使用共享库,编译主程序。
4.GNU C 函数库(glibc)
Linux系统中 glibc 常用库文件目录
添加库,除了把库文件放到以上路径,还可以自定义路径