linux开发工具

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

微信图片_20221007212918

文章目录

linux开发工具

1.软件包管理器yum

yum等同于手机上的应用商店.yum自动解决软件之间的耦合问题

yum list 显示软件清单

yum install 下载

yum remove 删除

2.编辑器vim

image-20230113160338013

其中 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

程序翻译过程

image-20230114150859625

动静态链接

动态链接优缺点

动态库命名: libXXXX.so

  1. 形成的可执行程序较小
  2. 受库升级或者被删除影响

静态链接优缺点

静态库命名: libYYYY.a

  1. 不受库升级或者被删除影响
  2. 形成的可执行程序提交太大

默认生成的可执行程序为动态库,一般而言系统自带动态库.

sudo yum install glibc-static安装c的静态库

sudo yum install -y libstdc++-static安装c++的静态库

image-20230114154424594

image-20230114155211168

生成的可执行程序

4.make与makefile

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

image-20230114163103466

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 退出

image-20230116204047843

break(b) 行号在某一行设置断点 break 函数名在某个函数开头设置断点

info break (i b)查看断点信息。

delete breakpoints(d)删除所有断点

delete breakpoints n(d n)删除序号为n的断点

image-20230116204215708

r或run运行程序。

n 或 next单条执行。

s或step进入函数调用

continue(或c)从当前位置开始连续而非单步执行程序

finish执行到当前函数返回然后挺下来等待命令

until X行号跳至X行

image-20230116204415279

infoi) locals查看当前栈帧局部变量的值 quit退出gdb

breaktrace(或bt)查看各级函数调用及参数

display 变量名跟踪查看一个变量每次停下来都显示它的值

undisplay取消对先前设置的那些变量的跟踪

image-20230116204624751

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 }



以下为效果运行图:

image-20230116210238848

image-20230116210252606

代码解释:

颜色输出可以网上找相关资料,这里不做解释,最右边的旋转棒,就如同上面代码所写就四个状态,每个数字对应每个状态,数值就按正常输出.#这一类输入,确定每次输出应该输出多少个,即数组中有多少#.\r使用原因,每次输出完,回车回到改行起点从而进行下一次的输出.

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

使用fflush()函数原因,printf并不会直接输出到屏幕上,当有间断符号时才会打印到屏幕.当有睡眠函数时,printf中没有\n的间断符号,所以屏幕上一直不会显示,从而使用fflush使其打印到屏幕上.

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux