目录
一.工具
1 . 编辑器
2.编译器
3.调试器
二.使用
1.vim编辑器
2.编译器:gcc/g++ make
3.调试器:gdb
下面是一个Linux--->vim中自主实现的进度条程序
今天我们来说一说Linux下一些常用的工具,包括编辑器,编译器,调试器和一些基本的使用方法
(1)vim(脚本编程)
Vim是从 vi 发展出来,编译及错误跳转等方便编程的功能特别丰富,程序员中广泛使用。是类Unix系统用户最喜欢的编辑器之一。
(2)Eclipse(自定义界面)
Eclipse拥有代码高亮和智能提示等功能。Eclipse可以完成以下编程语言——Python, R,JavaScript, Natural, Lasso, C, C++, Scheme等等的编程工作.
(3)Brackets(常规文件切换)
Brackets也是一款为Linux开发者设计的开源代码编辑器,好处在于,使用Brackets写代码,不会被任何事情所打断.
(4)Light Table(多媒体选择和编辑)
LightTable是一个免费开源的编辑器,界面干净好看,有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的.一个浏览器窗口即可实时查看更改,而且支持不同的嵌入。
(1)MSVC
Windows平台上最常用的编译器,在C++编译器圣战中的胜利者,但是对标准的支持不够快.
(2)Clang
licence极度友好,代码质量非常棒,采用的IR为LLVM IR非常优秀,各大公司逐步发力在Clang上,包括不限于微软,IBM,Nvidia等,各大公司也在开始疯狂的往Clang / LLVM交代码(圈地),也开始往Clang实现OpenMP,Nvidia GPU等支持,目前在赶超GCC的道路上,但是Clang依赖于的LLVM,目前的性能还是无法与GCC相提辩论.
(3)GCC/G++
跨体系结构很多,很多开源软件默认编译器都是GCC/G++,这一点上Clang比不上。
调试器来说,Linux下我们最常用的还是gdb,gdb功能强大.但是有一点,gdb调试的前提是可执行程序中需要有调试符号信息,gcc -g ,生成debug版本程序,才可以用于调试.
那么为什么一定要加上 -g 选项呢 ?
因为默认生成的可执行文件是无法用gdb进行跟踪或者调试的,因为可执行程序中没有可以供gdb调试的信息,那么为了将调试信息整合到可执行文件中,我们需要使用-g选项 , 这样生成的可执行程序,倘若出现问题,便可以使用 gdb 找出问题具体出现的位置,便于问题的解决.
在这里我们对vim,gcc,gdb进行展开讲解
vim有十二种操作模式,但是我们常用的就是三种,分别是 普通模式 , 插入模式 , 底行模式.
(1)普通模式(完成普通的基本命令)
普通模式进入插入模式
输入的字母 | 对应的插入位置 |
---|---|
i | 从当前位置开始插入 |
a | 光标向后移动一个字符然后进入插入模式 |
o | 向光标所在行下方添加新行开始插入 |
I | 光标回到行首 |
A | 光标所在行尾 |
O | 光标所在行上方添加新行 |
普通模式快捷键 :
普通模式快捷键 | 对应操作 |
---|---|
hjkl | 左下上右 |
wb | 向右/向左按单词移动光标 |
yy | 赋值光标所在行数据 |
nyy | 从光标所在行开始向下复制 |
P | 向光标所在行上方粘贴新行 |
p | 向光标所在行下方粘贴新行 |
x | 删除光标所在字符 |
h | 剪切到当前字符的后一个位置 |
dw | 删除光标所在位置往后的单词 |
dd | 删除行 |
D | 从光标所在处开始删除到行尾 |
u | 撤销 |
Ctrl + r | 回退 |
普通模式进入底行模式 : Shift + :
(2)插入模式: 向文件中插入数据
插入模式--->普通模式 按Esc键
(3)底行模式:
退出/保存编辑 vim设置
q! 强制退出
gcc编译器:将我们所写的代码编译生成计算机可以识别的机器指代码
编译过程: 预处理-->编译-->汇编-->链接
预处理: 展开所有代码
编译: 语义语法纠错,无误则将代码生成汇编代码
汇编: 将汇编代码解释生成机器可识别代码
链接: 将所有的目标文件(每一个.c文件生成的机器代码)以及外部的库,集合到一起,生成可执行程序
gcc 编译选项:
编译选项 | 作用 | 例子 |
---|---|---|
-g | 指示编译器在编译时产生调试信息 | gcc -g main.c -o main |
-E | 只进行预处理(进行宏展开),不生成文档 | gcc -E main.c -o main.i |
-S | 只进行预处理和编译,把文档编译成汇编代码 | gcc -s main.i -o main.s |
-c | 进行预处理,编译,汇编,生成obj文件 | gcc -c main.s -o main.o |
-o | 定制目标名称 | gcc main.o -o main |
-static | 禁止使用动态库 |
gdb调试的前提是可执行程序中需要有调试符号信息,gcc -g ,生成debug版本程序,才可以用于调试,
(1)加载程序:
gdb ./main
(2)调试程序
操作 | 对应内容 |
---|---|
r | 接收参数,运行程序 (r -a -l) |
start | 开始单步调试 |
l | 默认查看调试行附近代码 l file:line |
n | 下一步,但是不进入函数 |
s | 下一步,追踪进入函数 |
until | 直接运行到指定行 until file:line |
b | 打断点 b file:line |
i | 查看调试信息 |
d/d b_id | 删除所有/指定断点 |
p | 查看变量内容 |
c | 从停止处继续运行 |
watch | 变量监控 watch var |
bt | 查看函数调用栈信息 |
ProgressBar.c :
#include
#include
int main()
{
char per[10] = {0};
int i = 0;
while(i < 10)
{
per[i] = '-';
printf("%s\r",per);
fflush(stdout);
usleep(500000);
i++;
}
return 0;
}
Makefile :
ProgressBar:ProgressBar.c
gcc $^ -o $@
希望对大家有帮助,谢谢观看!