欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux下的基本开发工具

程序员文章站 2022-07-02 08:59:00
...

yum——软件包管理工具

查看软件包:yum list

安装软件包:yum install package_name

搜索软件包:yum search package_name

移除软件包:yum remove package_name

yum install gcc

yum search gcc//搜索制定软件包

写代码相关工具:编辑器/编译器/调试器

vim——代码编辑器

1.模式

实际有12种,常见的有三种-普通模式 插入模式 底行模式,所有的模式打开都是围绕普通模式切换的。vim 打开一个文件默认处于普通模式。

2.模式切换

i/a/o/ 由普通模式换到插入模式

  • i 直接进入插入模式
  • a 光标后移一个字符,进入插入模式
  • o 在光标所在行下方创建新行,进入插入模式

Esc键 由插入模式换到普通模式

Esc键 由底行模式切换到普通模式

: 由普通模式切换到底行模式

3.常见指令操作

普通模式下的操作

光标移动

  • hjkl ←↓↑→
  • ctrl+b 向下翻页
  • ctrl+f 向上翻页
  • gg 跳转文件开头行
  • GG 跳转文件末尾行
  • w/b 按照单词左右移动

文本操作——增删查改

  • yy/nyy 复制
  • p(小写) 向光标所在行下方粘贴
  • P(大写) 向光标所在行上方粘贴
  • dd/ndd 剪切(也可以当作删除,vim中没有删除)
  • x 删除光标所在字符
  • dw 删除单词
  • u 撤销

其他操作

  • Crtl+r 撤销的反向操作
  • gg = G 全文缩进对齐

底行模式下的操作

  • :q 退出
  • :wq 保存并退出
  • :q! 强制退出不保存

gcc/g++——编译器

gcc是C语言的编译器,g++是C++的编译器。

编译型语言——C/C++——程序编译之后才可以执行——运行性能高,编码较慢

解释型语言——Python/lua/shell——编写完直接执行,且是逐行解释——编码较快,运行性能较低

1.编译过程

将用户所写的高级语言代码(C/C++)解释称为机器可识别指令。

预处理:展开所有代码(引入头文件,宏替换,删除注释) gcc -E

编译:语义语法纠错,若没有错误,则将高级语言解释称为汇编语言 gcc -S

汇编:将汇编语言解释为机器指令 gcc -c

链接:将所有文件代码以及库文件中代码打包成为可执行程序

2.编译器常见选项

-E 只进行预处理 -o 指定要生成的文件名称

-S 只进行编译 -c 只进行汇编

3.链接

静态链接:链接生成可执行程序时,直接将库中的代码拷贝一份到可执行程序中。

1.可以不依赖文件的存在,库文件被删除时依然可以运行;

2.若库文件被大量的程序使用,则会造成大量的内存中代码冗余;

动态链接:链接生成可执行程序时,并不拷贝代码,只是在可执行程序中记录函数的位置附号信息。等到运行的时候将库加载到内存中,并且多个程序可以共同享用。

1.节省资源,内存*用一份,不会在内存中造成代码冗余

2.程序运行时,库文件必须存在

静态链接链接的是静态库(.a),动态链接链接的是动态库(.so)。

gdb——调试器

调试前提:使用gcc生成debug版可执行程序,需要加上-g选项(gcc 默认生成release版程序,程序中没有调试符号信息)

gcc -g test.c -o test

gdb 调试通过命令完成整个程序的调试过程

加载程序:

  • gdb ./main 加载程序调试
  • gdb -p pross_id 直接对一个正在运行中的程序进行调试

开始调试:

  • start 开始逐步调试
  • run 直接运行

流程控制:

  • list/l 默认查看调试行附近代码,也可以指定行 list filename:linenumber
  • next/n 下一步(不跟踪进入函数,逐过程)
  • step 下一步(跟踪进入函数,逐语句)
  • continue/c 从当前位置开始直接运行程序
  • until 直接运行到指定行停下,until filename:linenumber
  • disa 查看汇编代码

断点调试:

  • break filename:linenumber 给文件打断点
  • break funcname 给函数打断点
  • info break 查看断点信息
  • delete/d 删除断点
  • watch variable_name 变量监控
  • print/p variable_name 打印变量内容及详细信息
  • print var = x 设置变量值为x

其他调试:

  • backtrace/bt 查看函数调用栈,可以快速定位程序崩溃位置(栈顶函数)

项目管理工具:项目构建工具/项目的版本管理工具

make/Makefile——项目自动化构建工具

具体指自动地将某个项目构架成功

Makefile:是一个普通的文本文件,又有一点不普通,这个文件中记录的是一个项目的所有构建规则。

make:是一个解释程序,在执行make命令的时候,会到当前目录下寻找MaKefile文件,然后,对MaKefile中记录的构建规则进行逐行解释执行,最终完成整个项目的构建

目标对象:要生成的可执行程序的名称

依赖对象:是生成目标对象所需要的源码文件

Makefile编写规则

目标对象:依赖对象

[\t](tab键,不能是空格)为了生成目标对象所执行的命令语句

make中的预定义变量——通常在执行指令中使用

$^:表示所有依赖对象

$<:表示所有依赖对象中的第一个依赖对象

[email protected]: 表示目标对象

//src=$(wildcard ./*.c)获取当前目录下所有以.c结尾的文件名放到src变量中

Make解释执行规则

1.一旦在命令行执行make,则运行make解释程序,在当前目录下寻找Makefile文件

2.make的执行规则中,要生成目标对象,首先要先保证依赖对象已经生成,则会递归向下向下寻找依赖对象的生成规则

3.打开文件,找到第一个目标对象,与依赖对象进行时间关系判断,判断目标对象是否需要重新生成(只生成第一个目标对象就会退出)

4.若需要生成,则执行指令;(指令不一定非是生成目标对象的指令)

main:main.o child.o     1.依赖两个.o生成main
    gcc  $^ -o [email protected]		2.两个.o都不存在
main.o:main.c		    3.在下方继续找依赖对象(.o文件)的生成规则
    gcc -c  $^ -o [email protected]    4.先生成依赖对象,然后最终再来生成目标对象 
child.o:child.c
    gcc -c  $^ -o [email protected]

linux下的基本开发工具

伪对象:.PHONY:target_name 声明伪对象,不管这个目标对象是否存在,每次都要重新生成。

GIT——项目版本管理工具

(李纳斯开发的)具体是指可以实现项目的回滚(每一次的修改都有对应的版本号),合并等管理操作

git的三板斧

  • 从服务器上克隆一个项目到本地:git clone https://
  • 本地的版本提交:① git add ./* ② git commit -m "本次提交的备注信息"
  • 远程服务器的提交:git push orgin master
相关标签: --Linux-- linux