默认编译出来的文件名是 a.out
./ 的意思是当前路径下
复习一下四个步骤:
1.预处理(进行宏替换)
2.编译(生成汇编语言)
3.汇编(生成机器可识别的代码)
4.链接(生成可执行文件或库文件)
①使用指令生成mycode.i文件(.i为后缀一般是预处理以后的文件)
-E的意思是开始翻译,到预处理这个动作后结束
打开预编译后的文件发现文件很大
②同样执行gcc -S mycode.c -o mycode.s ,意思是“开始程序的翻译,完成编译以后,停止!!”
同时把它命名成mycode.s
用命令vim mycode.s 打开出来就是一份汇编的代码
问题:计算机可以执行汇编语言吗?汇编语言需要编译器吗?
不可以。 当然需要,汇编也有编译器
③第三步同样,gcc -c mytest.s -o mytest.c 形成汇编以后的代码(注意这边是小写c)
我们也可以使用二进制工具来查看od mycode.o
汇编形成的虽然是二进制文件,但是不可以直接执行,这个文件叫做可重定向目标文件
*这些步骤+在一起,可以这么写
记的小tip: ESc 对应的就是键盘左上的按键,形成的文件就是iso
为什么C程序翻译是这个过程?
最开始的人写代码(可能是一些科学家或者教授)用的是打孔变成的方式,然后人们有了助记符,出了汇编语言 ,之后的C语言又可以被编译成汇编代码,C语言的编译有去掉注释,宏替换,条件编译等过程;程序员又是一个喜欢合作的团体,大家分工合作,写的不同部分的代码可以通过链接连接到一起
链接如何理解?
ldd 查看文件用到的库
第一层理解:自己写的C语言的文件和第三方库提供的方法关联起来
第二层:动静态库
动态链接和静态链接:
动态链接是有需要就多跑几趟库
静态链接是将库中的代码拷贝进自己的可执行文件,不需要使用任何库
gcc执行的操作默认是动态链接
想要静态链接 ,要加 -static 操作
not find lc 说明没有安装静态库
第三层:
多人协同的合作需要链接
c++的后缀有(cc,cpp等)
编写一段C++代码
1 .开始调试和结束调试的命令
2 .默认情况下,Linux调试对应Visual Studio 是release 版本
手动切换至debug版本,gdb调试程序,必须是debug方式发布,也就是给gcc/g++ 添加 -g 选项
3.简单写一段求和1~100的c++代码并且进行gdb
进行gdb
gdb + 文件名 :开始调试
run : 开始调试(相当于VS studio中ctrl F5, 简写r)
list : 显示代码
l+ n :显示行号
l 1 ; l :从第一行开始显示;显示接下来的代码
打断点以及查看断点
b + n :打断点(全名是breakpoint,缩写是b)
info + b :查看断点
s : (step)逐语句
n : 逐过程
display + 变量 :显示变量值,相当于监视
p/P + 变量:临时显示(而不是display常显示),就显示一下
undisplay + 数字编号:取消显示
finish : 退出
continue: 跳到下一个断点
until + n :快速跳到第几行
enable + 断点号 :打开断点
disable + 断点号 : 关闭断点
delete + 编号:删除断点
1 .make 是一条命令 , makefile是一个文件
2 . 文件中有依赖关系和依赖方法,用来帮我们达到形成可执行文件的目的
例子:儿子给父母(依赖关系)打电话要生活费(依赖方法)
两者是有依赖关系的
代码第一行说明mycode是依赖mode.cpp
mycode.cpp需要通过依赖方法生成mocode
注意有tab键
完成清理功能
写好以后make和make clean 就相当于一对创建和删除
注意:
①make扫描makefile文件的时候,默认只会形成一个目标依赖关系,一般是第一个,如果我们要.PHONY:clean放到最上面的话,我们使用make实际上使用的是这个指令,使用创建文件就要使用 make mycode ;但是一般来说,我们把创建文件放在最前面
②touch Makefile中m大小写都可以,习惯上还是大写好一点
③.PHONY 是修饰对应的符号,伪目标的概念 ->【总是被执行】,会重复执行
简化版本,$@实际上就是前面的mycode , $^实际上就是后面的mycode.cpp
背景先知:
①回车和换行的概念相同的?
回车:回到当前行的最开始
换行:列不变,新起一行
②一个小?为什么这个程序先等了五秒钟以后才显示出“hello zkx”的字样?
是不是sleep先于printf运行呢?
绝对不是!
printf已经被执行,但是数据没有被立即刷新到显示器当中
没有n,字符串会暂时保存起来
显示器设备刷新策略是行刷新,也就是说遇到n进行刷新
为什么C要打开这三个流,因为程序为了帮我们计算数据,要有数据源和结果
在加上fflush(stdout)之后,我们的程序先打印,后睡眠
“只回车”在c语言中是r
1秒 = 10^3毫秒 = 10 ^ 6 微秒
默认是右对齐,左对齐前面带-
最后完整代码
1 .查看你的git版本
2 .gitee创建你的仓库
get clone + 复制的内容开始登录远程仓库
不要动.git中的内容
进入远程仓库默认有两个文件
将文件上传到仓库
最后一步git push
3 .在.gitignore中可以设置不要上传文件的后缀
比如我们设置一个.fff
实际上只上传了两个
4 .如何删除远程仓库中的文件
5 .git log可以看日志



