
文章目录
- linux开发工具
 - 1.软件包管理器yum
 - 2.编辑器vim
 - 3.gcc
 - 4.make与makefile
 - 5.git
 - 6.gdb
 - 7.小程序进度条
 
linux开发工具
1.软件包管理器yum
yum等同于手机上的应用商店.yum自动解决软件之间的耦合问题
yum list 显示软件清单
yum install 下载
yum remove 删除
2.编辑器vim

其中 w(保存) q(退出);
vim 命令模式操作
| 命令 | 作用 | 
|---|---|
| 光标命令 | |
| $ | 到行右 | 
| ^ | 到行左 | 
| G | 底部 | 
| gg | 顶部 | 
| n+G | 跳转到第n行 | 
| hjkl | 左下上右 | 
| shift+= | 切换文本大小写 | 
| shift+r=R | 替换模式 | 
| nr | 替换光标所在字符 默认n=1; | 
| x | 从光标位置向后删除 | 
| X | 从光标之前的位置向前删除 | 
| nyy | 复制光标所在行复制n行,默认n=1; | 
| np | 粘贴n次,默认n=1; | 
| ndd | 删除光标开始的n行,默认n=1; ndd+p为剪贴 | 
| u | 撤销 | 
| wb | 按单词移动,w向后移动 b向前移动 | 
| cnw | 默认n=1 更改光标所在单词 | 
| ctrl+r | 撤销u操作 | 
| i/a/o | 进入插入模式 | 
| set nu/nonu | 显示行号,关闭行号 | 
| ctrl+ww | 跨屏操作 | 
| !+命令 | 强制执行 | 
| %s/printf/cout/g | 用cout替换printf | 
vim /etc/sudoers进入该文件,可以使为部分账户添加sudo功能
3.gcc
默认是release
程序翻译过程

动静态链接
动态链接优缺点
动态库命名: libXXXX.so
- 形成的可执行程序较小
 - 受库升级或者被删除影响
 
静态链接优缺点
静态库命名: libYYYY.a
- 不受库升级或者被删除影响
 - 形成的可执行程序提交太大
 
默认生成的可执行程序为动态库,一般而言系统自带动态库.
sudo yum install glibc-static安装c的静态库
sudo yum install -y libstdc++-static安装c++的静态库


生成的可执行程序
4.make与makefile
- 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
 - 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂 的功能操作
 - makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编 译,极大的提高了软件开发的效率
 - make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make.可见,
 - makefile都成为了一 种在工程方面的编译方法。 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
 

5.git
git版本控制器
git add将代码放到下载好的目录中
git commit -m 将代码放到本地仓库
git push 将代码同步到远端服务器
git log 显示提交记录
git pull 同步本地与远端服务器
git status 查看本地仓库状态
git mv 移动文件
git rm 删除文件
6.gdb
gdb是linux下的调试工具
gdb的使用
list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
quit/q 退出

break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点
info break (i b):查看断点信息。
delete breakpoints(d):删除所有断点
delete breakpoints n(d n):删除序号为n的断点

r或run:运行程序。
n 或 next:单条执行。
s或step:进入函数调用
continue(或c):从当前位置开始连续而非单步执行程序
finish:执行到当前函数返回,然后挺下来等待命令
until X行号:跳至X行

info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb
breaktrace(或bt):查看各级函数调用及参数
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪

7.小程序进度条
主要代码:
    1 #include "process.h"
    2 
    3 
    4 
    5 void Process()
    6 {
    7     char bar[101];
    8     char buffer[]={'|','/','-','\\'};
    9     int cnt=0;
   10     memset(bar,'\0',sizeof(bar));
   11     char tmp[]={'#','-','*'};
   12     while(cnt<=100)
   13     {
   14         printf("\033[47;33m[%-100s][%3d%%][%c]\r\033[0m",bar,cnt,buffer[cnt%4]);
   15         fflush(stdout);
   16         bar[cnt++]=tmp[N];                                                                                                                                                           
   17         //sleep(1);
   18         usleep(50000);
   19     }
   20     printf("\n");
   21 }
 
以下为效果运行图:


代码解释:
颜色输出可以网上找相关资料,这里不做解释,最右边的旋转棒,就如同上面代码所写就四个状态,每个数字对应每个状态,数值就按正常输出.#这一类输入,确定每次输出应该输出多少个,即数组中有多少#.\r使用原因,每次输出完,回车回到改行起点从而进行下一次的输出.
使用fflush()函数原因,printf并不会直接输出到屏幕上,当有间断符号时才会打印到屏幕.当有睡眠函数时,printf中没有\n的间断符号,所以屏幕上一直不会显示,从而使用fflush使其打印到屏幕上.
 ,就如同上面代码所写就四个状态,每个数字对应每个状态,数值就按正常输出.#这一类输入,确定每次输出应该输出多少个,即数组中有多少#.\r使用原因,每次输出完,回车回到改行起点从而进行下一次的输出.
使用fflush()函数原因,printf并不会直接输出到屏幕上,当有间断符号时才会打印到屏幕.当有睡眠函数时,printf中没有\n的间断符号,所以屏幕上一直不会显示,从而使用fflush使其打印到屏幕上.



















