linux -c程序开发
目的是在linux中创建可执行的c语言程序的步骤 和gcc,make和git的简单运用
建立可执行程序的步骤:
-1:预处理:
--:头文件展开;--去掉注释;--宏替换;--条件编译
-2:编译
--:将预处理之后的c语言替换为汇编语言带阿米
--:语法分析,语义分析,代码生成
--:检查语法正确性并且优化代码
-3:汇编:
--:将汇编代码转化为机器码
--:生成二进制文件,包含机器码和辅助信息
-4:链接
--:将多个目标文件和库文件合并为一个可执行文件
--:解析符号表,处理外部引用
使用gcc编译c语言程序:
GNU C编译器,是linux通用c语言编译器
语法格式: gcc [-选项] 文件
没有选项直接生成可执行文件
常用的选项:
E 只是预处理源文件,不编译
S 编译到汇编,生产汇编代码文件
c 编译到目标文件阶段,但是不链接(二进制文件,可以使用 objdump反汇编查看汇编代码)
o 根据编译阶段指定的输出到文件名
项目编译工具:make
为了解决:源代码关系维护苦难(把代码维护命令和编译命令卸载makefile中,利用make工具去解析文件自动执行相关的命令),减少重复编译时间(只对改动后的文件重新编译,重新链接后,可以快速看到效果)
makefile文件:这个是mkae依赖文件
特殊文本文件,包含指令和信息,详细描述了项目结果,文件间关系,编译参数设置,等待makefile编写完成,就可以实现大型项目的编译链接,清理工作
make的原理:解析makefile文件,根据目标及其依赖关系,构建依赖图,并自动执行相应的构建命令
makefile文件有若干规则,目标,依赖和命令
目标是:要产生的文件名称和动作名称
依赖文件是:用于产生目标文件的输入文件
命令是:make执行的动作,多个命令时一个占一行
make的语法规则:
make [-f 文件] [目标]
运行命令的时候,默认找:GNUmakefile /makefile / Makefile /当然也可以 -f指定
目标,如果没有指定目标就会构建第一个目标然后退出,如果有多个,就会按顺序去构建目标及其依赖关系
实例:编译软件 hello
在makefile中,如下定义
hello: hello.c
gcc -o hello hello.c
说明了hello 依赖:hello.c,hello通过gcc -o hello hello.c得来
实例2:
要编译cal软件,那么我们的makefile如下
cal 依赖与cal.o,mul.o,div.o
通过命令 gcc cal.o mul.o div.o -o cal 生成
下面的解释同上
最后的clean目标是伪目标,不依赖与任何文件
rm *.o是.o后缀文件
第一次的make会全部编译一次
但是如果第二次进行make,因为没有改变就不会有任何提示信息
如果我们通过touch,修改了创建时间,那么就会只编译修改部分
使用 make clean就可以删除所有的.o文件
Git
用于高效的处理各种规模的项目版本管理任务,开发者通过git命令来执行项目版本管理和各项操作
1,工作目录,在电脑中的目录,用于项目开发,进行文件编辑,添加和删除
2,暂存区,在本地仓库和工作目录之间的,允许用户在提交前进行组织,检查
3,本地仓库负责存储用户的所有提交,分支,标签,版本控制的核心,使得用户可以回顾历史版本,修改,创建,切换分支,或者添加标签
4,远程仓库,托管在平台or服务器上面的软件库,包含了源代码,历史记录,分支信息,配置文件,可以推送本地仓库修改,拉去仓库最新版本等
常见命令
git clone [远程仓库的链接]
git add [文件/目录]//将文件加入到暂存区
git commit -m "说明信息"//将暂存区的内容提交
git push [远程仓库] [本地分支]//把本地分支提交到远程目录
git pull [远程仓库] [分支] //拉取远程仓库的分支
git branch //列出所有本地分支
git branch name //创建一个分支
git checkuot 分支名 //切换到对应的分支
git branch -d [分支] //删除分支
git status //仓库的状态
git log //git的提交记录
git config //查看和修改git配置
当然更多的你可以去Learn Git Branching学习更多