Linux 环境开发工具

Linux开发工具

1 vim编辑器

vim编辑器是Uinx/Linux操作系统下标准的编译器。

vim编辑器的基本模式

  • 命令模式
    控制屏幕光标的移动,进行文本删除,复制等编辑工作。以及进入插入模式和底行模式。
  • 插入模式
    只有在插入模式下才可以输入文字。
    按esc退回到命令模式,刚打开的vim编辑器处于命令模式
  • 末行模式
    保存文件或退出,以及设置编译环境等工作。
    在命令行模式下输入冒号进入底行模式。
    这里写图片描述
    vim 命令模式命令(自己用过的)
  • i 进入插入模式,从光标当前位置开始输入。
  • a进入插入模式,从光标的下一位置开始输入。
  • o进入插入模式,在光标的下方插入一行,从行首开始输入。
  • h,j,k,l 将光标 左,下,上,右 进行移动。
  • gg 进入文本开头
  • x 删除光标所在字符
  • dd 删除光标所在行
  • yy 复制光标所在行
  • p 粘贴
  • u 撤回到上一动作
    vim 末行模式命令
  • set nu 显示行号
  • 输入一个数字并按回车,跳转到该行
  • /关键字 查找关键字
    vim配置
    打开自己目录下的(cd ~) .vimrc文件,进行配置

2 gcc/g++ 编译器的使用

gcc/g++ 是GUN 中 C 和 C++ 的编译器
gcc [option | filename ]…
g++ [option | filename]…
options 是编译器所需要的参数
filename 是文件名称

Linux下的 C 和 C++ 编译器将程序编译成一个可执行文件需要经过4个步骤
- 预处理
在预处理过程中,对源代码文件中的宏展开 ,处理文件包含,条件编译,去注释等。

gcc -E test.c -o test.i
  • 编译
    编译过程将预处理完毕的文件进行词法分析,语法分析,语义分析以及产生相应的汇编代码。
    gcc -S test.i -o test.s
  • 汇编
    汇编是把编译阶段产生的.s文件转换成目标文件
    gcc -c test.s -o test.o
  • 连接
    当每个模块编译完成后,按照要求将这些模块组装起来。使得各个模块之间能够正确的衔接。
    gcc test.o -o test
    除了上面介绍的gcc选项外
  • -g 生成调试信息,可以使用gdb调试器。
  • -O0 -O1-O2 -O3 编译器的优化级别,-O3优化级别最高,-O0表示没有优化。

3 gdb 调试器

Linux下的代码调试器,因为 gcc/g++默认情况下生成的是release模式,但是如果要使用gdb调试,则必须加上 -g 选项,生成一个debug模式的文件。
使用: gdb filename
- l 从主函数开始/从上次显示的位置 依次向下显示源码,每次显示10行。
- l+函数名 列出该函数的源码
- r 运行程序
- b+行号 在该行设置一个断点
- n 单条执行(相当于vs下的F10)
- s 进入函数调用(相当于vs下的F11)
- info b 查看断点信息
- p+变量 打印变量的值
- delete+断电序号 删除该断点
- quit 退出gdb调试

4 Makefile

当我们要写一个工程的时候,其中的源文件不计其数,makefile定义了一系列规则,对哪些文件需要先编译哪些文件需要后编译,哪些文件需要重新编译以及其他更复杂的操作进行了定义。
在编写makefile文件时,要知道工程中的哪些文件需要编译,以及如何编译,需要哪些库文件以及如何创建这些库文件,如何产生最后我们需要的可执行文件。
Makefile
目标 : 依赖文件
tab +命令 //必须跟tab 否则无法识别

在这里我们利用一个简易计算器来编写Makefile文件。
这里写图片描述
这里写图片描述
这里写图片描述
现在我们的main.c 需要依赖 add.h sub.h mul.h 以及库函数(暂时不考虑)
完成编译。
而 add.h,sub.h,mul.h分别依赖与其各自的.c源文件编译产生。
所以我们的 Makefile
这里写图片描述
make一下
这里写图片描述
可以看到makefile自动完成了一些编译过程。
但是此时,当我们再次make一次
这里写图片描述
可以看到make没有进行编译,并告诉我们此时的main是最新的。
这是因为makefile的工作原理,他会将里面的依赖文件的时间戳与目标文件的时间戳进行比较,如果依赖文件的时间戳小于目标文件,则此时的依赖文件并没有进行任何改动,所以生成的源文件也就不需要进行任何更改,提高了编译效率。
此时我们随便更新一个依赖文件的时间戳
这里写图片描述
make一下之后,因为只有一个源文件的改动,此时也只需要对该文件产生的目标文件,以及最终的可执行文件进行重新编译,大大提高了编译效率。
我们也可以简化我们的makefile文件
@ 代表所有目标文件
这里写图片描述

当我们虚要对工程进行清理,并重新编译此时就需要加上clean
这里写图片描述
当我们需要将工程清空,make clean
这里写图片描述
.PHONY 的意思为伪目标,保证clean总是被正确的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值