linux重温bingc(基本、yum、make)

linux重温bingc(基本、yum、make),第1张

linux重温bingc(基本、yum、make)

文章目录

基本命令

history:历史执行的命令tar压缩文件权限权限提升

使用实现 补全命令ctrl+cctrl + a : yum

安装lrzsz或者xftpvim安装vimforcpp(c/c++的一个编辑器)

修改代码风格其他 编译器:gcc/g++

file 名字ldd 编译好的c程序 调试器gdb

两种版本调试使用场景

1.程序没有执行起来,调试可执行程序(重要的)2.调试正在运行的程序(gdb attach pid)3.调成崩溃的程序产生的coredump文件

1 ulimit -aulimit -c unlimited调试命令 白动化构建项目:make&makefile

前言makefile文件格式

使用工作方式makefile文件当中的自定义变量和内置变量

内置变量:自定义变量 伪目标

格式伪目标命令

基本命令 history:历史执行的命令
	想要执行历史的命令:可以使用向上箭头
	![以往执行的命令的编号]
tar压缩

文件权限
chmod +t fimename//粘滞位

防止root用户创建的东西被普通用户删除,
此情况下可以删除的人有
1.超级管理员删除
2。该目录的所有者删除
3.该文件的所有者删除

权限提升 使用

实现

root修改该文件

补全命令

table

ctrl+c

结束进程
终止当前输入

ctrl + a :

命令行的光标跳转到行首

yum
yum list | grep ”tree“//查看有哪些安装包,可使用管道

安装lrzsz或者xftp

lrzsz :可以支持文件的上传和下载

rz//上传
sz//下载
//此命令不支持文件夹

xftp :文件上传和下载的工具,xshel1是同源

vim

安装vimforcpp(c/c++的一个编辑器)

那个用户下执行那个用户可以使用

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
修改代码风格

其他

编译器:gcc/g++
yum install gcc-c++ libstdc++-devel

1.gcc编译C,g++编译C++
2.编译的4个过程:预处理,编译,汇编,链接,
预处理:
宏替换,头文件展开,删除注释,条件编译

gcc —E [source file] -o [xxx]. i

选项“-E”,该选项的作用是让 gcc在预处理结束后停止编译过程选项
“-o”是指目标文件
“.i”文件为已经过预处理的C原始程序。

编译:将源文件生成为汇编代码

gcc -S test.c/test.i -o test.s

汇编:将汇编代码转化成为二进制代码

gcc -c test.c/test.i/test.s -o test.o

链接:将若千个二进制代码(.o)或者库文件链接起来生成可执行程序或者库文件

//动态编译
gcc test.c -o mytest
//静态编译
gcc test.c -o mytest -static

静态编译的错误
mytest:就是可执行程序的名字

file 名字

文件详细信息

ldd 编译好的c程序

所依赖文件库地址

调试器gdb

下载方式

两种版本

默认release版本
编译debug版本

g++ r.cpp -o r2 -g
调试
gdb m//可执行程序

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。[重要](l-)向上展示
list/l 函数名:列出某个函数的源代码。
r或run:运行程序。[重要]
n 或 next:单条执行。[重要]
s或step:进入函数调用[重要]
break(b) 行号:在某一行设置断点[重要]
break 函数名:在某个函数开头设置断点
info break (i b):查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。[重要]
set var:修改变量的值
continue(或c):从当前位置开始连续而非单步执行程序[重要]
run(或r):从开始连续而非单步执行程序
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点[重要]
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(或i) breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数【重要】
info(i) locals:查看当前栈帧局部变量的值
quit:退出gdb
!gcc:重复上一次gcc编辑命令

使用场景 1.程序没有执行起来,调试可执行程序(重要的) 2.调试正在运行的程序(gdb attach pid) 3.调成崩溃的程序产生的coredump文件

3.0 coredump 文件、核心转储文位,是程序在崩溃的一瞬间内存的映像〈相当于案发现场)

1 ulimit -a

core file size :决定产生的coredump文件最大能够多大

ulimit -c unlimited

修改coredump政策

如果说我们想要通过gdb + coredump方式调试,可执行程序也应该是 debug版本,

调试命令

gdb +可执行程序+ coredump文件

白动化构建项目:make&makefile 前言

make:是一个命令1
makefile :是一个文件(定义编译程序的规则)
make根据makefile的文件内容,进行解析,编译程序(构建项日)从而生成可执行程序

makefile文件格式

目标对象:生成的内容
依赖对象:源文件
编译命令:如何生成

使用

1.vim 编辑makefile

r:r.cpp  
	g++ r.cpp -o r -g  

第二行tab键
2.

工作方式

    make 默认在当前路径下寻找文件名称为“makefile”或者“Makefile”的文件来进行解析,如果找不到,则报错:
    2.
    只为生成第一个目标对象而服务,
    如果生成了目标对象,则后续文件当中的内容不解析
    如果为了生成第一个目标对象,需要先生成依赖对象,则在makefile文件当中查找生成依赖对象的方法和具发现以来的对象不存在,报借返回

      若依赖对象的最后一次修改时间小于目标对象的最后一次修改时间,则不生成

      makefile文件当中的自定义变量和内置变量 内置变量:

      $ ^:所有依赖的对象
      $ @ :目标对象
      $ <:代表第一个依赖对象自定义变量

      自定义变量

      可以自己给变量起名字,后续使用$符号进行解析

      r=r2
      $(r):r.cpp
      	g++ r.cpp -o $(r) -g
      
      伪目标

      伪目标的特性是,总是被执行的。

      格式

      .PHONY :[伪目标的名称]
      伪目标:[依赖对象]
      命令
      例子:

      r=r2
      
      .PHONY:$(r)
      $(r):r.cpp
      	g++ r.cpp -o $(r) -g
      
      伪目标命令
      r=r2
      
      .PHONY:$(r)
      $(r):r.cpp
      	g++ r.cpp -o $(r) -g
      	
      .PHONY:clean
      clean:
      	rm $(r)
      

      欢迎分享,转载请注明来源:内存溢出

      原文地址: https://outofmemory.cn/zaji/5714916.html

      (0)
      打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
      上一篇 2022-12-17
      下一篇 2022-12-17

      发表评论

      登录后才能评论

      评论列表(0条)

      保存