1. 编译器-gcc
- gcc test.c -o test.o
- 预处理:gcc -E test.c -o test.i
- 编译:gcc -S test.i -o test.s
- 汇编:gcc -c test.s -o test.o
2. Linux的调试器-gdb
linux下默认是以release方式发布,所以需要在gcc后面加上-g 将release转换成debug
- l:显示代码(默认只有10行)
- b+行号:打断点
- info b:查看断点
- d+断点编号:删除断点
- display+变量:常显示
- undisplay+编号:取消常显示
- r: 运行起来
- s:逐语句
- n:逐过程
- finish:结束函数调用,然后停下
- c:运行到下一个断点处
- gdb具有记忆命令的功能,<回车>会触发上一条命令
3. 自动化构建工具-make/Makefile
- $^ 表示:依赖文件列表
- $@ 表示:目标文件
- %.c表示:当前目录下的所有的.c文件展开
- %.o表示:对用.c形成的.o
- $<表示:%.c所代表的源文件,一个一个的拿出来,用gcc进行编译,形成同名的.o
- 补充:gcc -c mian.c == gcc -c main.c -o main.o
- 补充:*.o 表示匹配所有后缀是.o的文件
- 补充:在依赖方法前加上@,make时就不会回显指令
4. 缓冲区的刷新策略
- 无缓冲(立即)
- 行缓冲(\n)
- 全缓冲(缓冲区满的时候再刷新,磁盘文件(file))
- 程序退出,自动刷新
- fflush(stdout)刷新缓冲区
- 注意:vs2019中的\n是即换行又回车
5 版本控制器-git
- 安装git:sudo yum install -y git
- 克隆远程仓库到本地: git clone 远程仓库地址
- 添加文件:cp 文件名 仓库
- 查看添加文件:git status
5.1 git三板斧
- git add 文件名
- git commit -m "日志信息"
- git push
5.2 生成token令牌
- username 是github的用户名
-
Password 是github的用户的token令牌(不是你的账号密码)
6. 函数库的分类
Linux中:.so(动态库),.a(静态库)
windows中:.dll(动态库),.lib(静态库)
- ldd 可执行程序
- gcc生成的可执行程序默认是通过动态库链接
- 动态链接:将库中我要的方法的地址,填入我的可执行程序中,建立关联,节省资源
- ls /lib64.libc-2.17.so # 提供C语言的方法实现
- ls /usr/include/stdio.h # 提供C语言的方法列表,方法的声明
- -static:表明使用静态链接的方式形成可执行程序
- 如果链接失败试试:
- sudo yum install -y glibc-static # C静态库
- sudo yum install -y libstdc++-static #C++静态库
- 静态链接:将库中方法的实现,真的拷贝到我们的可执行程序中!但占用资源