• 【Linux】环境基础开发工具使用


    Vim

    Vim 是一个编辑器

    只能编辑,只能写代码

    直接输入vim
    在这里插入图片描述

    : q就是退出

    在这里插入图片描述

    touch新文件,vim 进入

    vim是一款多模式的编辑器

    命令模式(默认打开的模式)

    i 进入编辑模式/插入模式
    在这里插入图片描述

    esc回到命令模式

    冒号进入底行模式

    保存并退出 加感叹号是强制。

    在这里插入图片描述

    退出底行 esc

    插入模式不能直接进入底行模式,要从命令进

    底行也不要直接进插入

    常见命令

    复制光标行 yy 加数字 从当前行 往下复制多少行 nyy

    粘贴 p 加数字就是粘贴多少行 np

    u—撤销历史操作

    ctrl+r 撤销刚才的撤销

    光标定位:

    到结尾:shift+g

    最开始: gg

    定位到某一行:数字加shift+g

    到行尾:shift+4

    到行首:shift+6

    行内快速移动:w和b是依据单词左右移动的

    hjkl: h 左 j 下 k上 l右 记忆方法:h(最左边) j(jump向下跳) k(king高高在上) l(最右边)

    删除(剪切)整行:dd ndd就是删除n行

    剪切 dd p

    只要大写或小写

    shift+~ 小写转大写 或 小写转大写

    shift +r 替换 覆盖式替换老内容

    r 就是只替换一个字符 加数字就是换多少个字符。

    想要删一个字符 :x 数字+x就是删多少个字符 默认从左向右删除

    shift+x :从右往左删除 也支持nx

    练习方法:天天用

    底行模式

    调出行号:: set nu
    vs 对比模式 分屏操作 光标在哪 ,底行在哪

    光标从左侧跳转到右侧 :ctrl+ww快速按
    在这里插入图片描述
    在这里插入图片描述

    vs 文件名 可以分屏操作

    w:表示写入 w!

    q:退出 q!

    回去看运行结果: !cmd: 不退出vim执行对应的命令
    在这里插入图片描述

    !ls 就是看目录

    vim配置

    https://github.com/wsdjeg/vim-galore-zh_cn

    .vimrc 当启动vim时,自动启动

    vim. vimrc即可

    一键配置vim VimforCpp gitee

    在这里插入图片描述

    找到vimrc 设置缩进 查找tabstop softtabstop shiftwidth 修改即可

    如果配置出错,进入root

    vim /etc/sudoers

    把行号加上,加入信任列表

    Linux编译器——gcc/g++

    gcc -v gcc只能编译C

    g++ -v g++可编译C也可编译C++

    在这里插入图片描述

    sudo yum install -y gcc-c++

    安装g++

    程序编译的过程:

    文本的C - 计算机二进制

    磁化 用南北极表示所以是二进制,硬件只认识二进制。

    1.程序的预处理阶段(去注释、宏替换、头文件展开、条件编译……)

    2.编译 (C—> 汇编)

    3.汇编 (汇编→可重定向二进制目标文件)

    4.链接 (链接 → 多个.o文件合并成一个可执行).exe

    自己做实验

    条件编译

    在这里插入图片描述

    gcc

    在这里插入图片描述

    编译mytest.c 生成可执行程序

    在这里插入图片描述

    把预处理完成的内容写到临时文件mytest.i

    -O:形成另一个名字的新文件

    -E:从现在开始进行程序的翻译,如果预处理完成,就停下来。

    #parama once 防止头文件被重复拷贝到源文件
    在这里插入图片描述

    预处理之后依旧是C语言

    编译:
    在这里插入图片描述

    -S:从现在开始进行程序的翻译,如果编译完成,就停下来。(转成汇编语言)

    -c:从现在开始进行程序的翻译,如果汇编完成,就停下来。

    .o文件是可重定向目标文件 变成了二进制 只是你自己的代码变成了二进制,并未和库关联起来

    在这里插入图片描述

    链接:

    和库关联起来

    在这里插入图片描述

    背记:ESc

    动静态库——感性的理解

    在这里插入图片描述

    dynamically linked动态链接

    一般链接的过程,是有两种方式:

    a.动态链接-需要动态库

    b.静态链接-需要静态库

    ls /lib64/ 这是库文件

    ls /usr/include/stdio.h 提供C语言的方法列表,方法的声明

    ls /lib64/libc-2.17.so -l 提供C语言的方法实现

    包含头文件,链接方法 实现exe

    Linux: .so 动态库, .a静态库

    Windows: .dll动态库,.lib静态库

    C程序是脱离不了C库文件的。

    动态链接

    网吧

    告诉你库在哪里,需要用的时候就跳转至动态库。

    需要我自己调用时,就跳转至库中去执行,编译时只要把当中使用库函数的地址填到代码中,就叫动态链接。

    gcc和g++默认动态链接

    静态链接

    自己买电脑

    把方法的实现给自己的代码中拷了一份

    将库中方法的实现,真的拷贝到我们的可执行程序中。

    gcc test.c -o mytest-s -static 就变成了静态链接

    动态链接必须使用.so动态库文件

    静态链接必须使用.a静态库文件

    sudo yum install -y glibc-static

    sudo yum install -y libstdc+±static

    make/makefile

    make是一个命令

    makefile是一个文件

    他们为了帮我们自动化地构建项目

    在这里插入图片描述

    编写makefile

    a.依赖关系

    b.依赖方法

    在这里插入图片描述

    依赖关系,左侧目标文件,右侧依赖文件列表

    第二行table紧挨,依赖方法

    在这里插入图片描述

    make执行

    在这里插入图片描述

    清除

    在这里插入图片描述

    make后面跟依赖关系名字,就可以运行哪个方法

    make是从上到下扫描的

    .PHONY

    伪目标总是被执行

    就是make clean不会因为Update last 而不允许 总是被运行.

    习惯:clean设置.PHONY

    makefile根据文件的最近修改时间来的。

    ACM

    stat文件名

    在这里插入图片描述

    Modify:内容改变

    Change:属性的变化
    在这里插入图片描述
    在这里插入图片描述

    两个文件同时编译
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    进度条小程序:

    缓冲区的概念

    先保证makefile能把hello world跑出来 再写程序。
    在这里插入图片描述

    自动补全是通过头文件自动推断的

    sleep先出来,是因为Printf早就执行完了,只不过信息没有被立马显示出来。

    C语言是会给我们提供输出缓冲区的,根据特定的刷新策略,来进行刷新。

    输出缓冲区就是C语言给我们提供的一段内存空间

    显示器设备,一般的刷新策略是行刷新

    碰到\n就把\n之前的所有字符全部给我显示出来。

    如果我要立马刷新,fflush

    在这里插入图片描述

    回车换行:

    换行是到下一行的旧位置‘\n’

    回车回到行首’\r’

    在这里插入图片描述

    换成\r就出不来,因为在缓冲区出不来 要用fflush

    在这里插入图片描述

    在这里插入图片描述

    预留100个字符

    在这里插入图片描述

    负号左对齐

    在这里插入图片描述

    完整版

    yum

    windows

    1.要下载安装的软件是在你的电脑上吗?———不是

    2.你怎么知道在哪里?——搜索

    3.谁放的?它内部的工作人员

    Linux

    Linux社区或者对应开发人员放的。

    基本过程

    在这里插入图片描述

    yum就相当于手机上的应用商店

    在这里插入图片描述

    作用:

    1.搜索 下载 安装

    2.解决依赖关系

    yum的操作

    在这里插入图片描述
    在这里插入图片描述

    yum源:

    就是一个配置文件

    在这里插入图片描述

    安装扩展源

    sudo yum install -y epel-release
    
    • 1

    yum源 -Centos- Base.repo就是配置文件

    更新yum源:

    网上搜,centos 7 更新国内yum源

    做备份就是把它重命名一下

    yum三板斧:

    yum list #yum | greap + 软件名称 搜索软件

    el7就是 centos7简写

    yum install

    yum remove 你的软件 #移除

    git

    版本控制器

    精华在多人协作

    1.什么是版本控制?

    实验报告举例,备份每个版本

    在这里插入图片描述

    写个代码实现上面的过程

    退回某个版本叫做回滚

    从V2改一个版本叫做拉了一个分支

    2.git的历史

    林纳斯·托瓦兹 手写了一个版本控制器git

    开源精神

    3.git三板斧

    1.git clone+ 仓库链接

    2.git add 你的文件 #添加我们的代码到本地仓库

    3.git commit -m “这里必须写提交日志”

    4.git push #提交代码到远端仓库中

    在这里插入图片描述

    其他情况:

    1. 配置用户名和邮箱
    2. git log就是看提交日志
    3. 有时候会有提交冲突 git pull远端与本地再同步
    4. .gitignore #不想提交某个后缀名的文件

    在这里插入图片描述
    5. git rm 文件名 #删除文件

    gdb

    调试器

    退出gdb quit

    no debugging symbols found : gcc 和 g++ 默认形成的可执行程序是动态链接版本的release的 所以无法直接被调试

    gcc -g 就是以debug版本发布

    rodata只读数据

    gdb操作

    20221117目录下是gdb文件

    在这里插入图片描述

    gdb+可执行程序

    quit可退出gdb

    显示代码 list 简写成l

    在这里插入图片描述
    在这里插入图片描述

    l 0 回车 查看所有代码

    gdb会记录最近一条命令,回车就是执行最近一条指令

    run命令开始跑程序,开始调试,如果没有设置断点,就直接结束。(vs里的F5)

    在这里插入图片描述

    给特定行打断点: break point + 行号

    缩写:b+行号

    在这里插入图片描述

    info b: 查看断点(编号)

    在这里插入图片描述

    d +断点编号 删断点

    在这里插入图片描述

    逐语句调试:next 简写n

    p 变量名 :打印变量内容

    step +回车 简写s 进入函数调试(VS里的F11)

    在这里插入图片描述

    bt调用堆栈 第一个是所处函数

    在这里插入图片描述

    将当前函数跑完 finish

    在这里插入图片描述

    display叫做常显示

    在这里插入图片描述

    undisplay 编号:取消显示

    until 行号:跳转到指定行

    continue:跳断点 简写c

    disable 断点编号: 禁用断点

    在这里插入图片描述

    打开断点 enable

    set var i = …. 让循环变量到什么值

  • 相关阅读:
    【力扣C语言】每日一题
    python机器学习 一元线性回归 梯度下降法的实现 【Python机器学习系列(四)】
    30岁以上的程序员还死磕技术,别说拿高薪,可能连饭碗都会保不住
    构建AR视频空间大数据平台(物联网及工业互联网、视频、AI场景识别)
    Mybatis中使用了哪些设计模式
    FMC子卡设计方案:FMC177-基于AD9361的双收双发射频FMC子卡
    uniapp前端样式
    Arduino ESP32使用U3115S芯片控制H桥驱动有刷直流电机
    Java中异常的概念、体系结构和分类
    有哪些好用的实时网络流量监控软件
  • 原文地址:https://blog.csdn.net/m0_60653728/article/details/127931666