0


给自己一首歌的时间学习来Linux基本开发工具

文章目录

Linux软件包管理器 —— yum

简介

在Linux下安装软件, 一个通常的办法是运用yum指令,yum是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上。

yum的使用

如何显示可以安装的软件有哪些呢?
我们可以输入以下指令:

  • yum list

搜索结果为:
在这里插入图片描述
通过

yum list

展示的内容过多,我们可以使用管道指令和grep进行筛选,以gcc为例:

  • yum list | grep gcc

在这里插入图片描述
接来下我们如何安装某一款软件呢?以sl为例:

  • sudo yum install sl

在这里插入图片描述

输入

y

,进行安装即可
最后我们如何想要卸载某一款软件?还是以sl为例:

  • sudo yum remove sl

在这里插入图片描述

Linux编辑器 —— vim

Vim的三种常用模式

1. 正常/普通/命令模式(Normal mode)

  • 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段等
  • 可按i/a/o进入插入模式,shift+;进入末行模式

2. 插入模式(Insert mode)

  • 只有在插入模式下,才可以进行编辑代码
  • Esc可退回命令模式,不能直接到末行模式

3. 末行模式(Last line mode)

  • 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作
  • Esc可退回命令模式,不能直接到插入模式

Vim的基本操作

在命令行输入vim+文件名可以直接进入vim全屏幕编辑画面,当该目录下不存在此文件时,vim会自动创建文件。进入vim模式之后,是处于正常模式。正常模式可以与插入模式和末行模式相互切换,但插入模式和末行模式之间不能直接切换。

Vim的正常模式命令集

  • 移动光标
    指令功能h/j/k/l光标向左/下/上/右移动gg移动到文章开始shift+g移动到文章最后#+shift+g光标移动到文章的第#行shift+^移动光标所在行的行首**shift+$**移动光标所在行的行尾w光标跳到下个字的开头e光标跳到下个字的字尾b光标回到上个字的开头#l光标移动到该行的第#个位置

  • 删除文字
    指令功能dd删除当前光标所在行#dd从光标所在行开始删除#行x删除光标所在位置的一个字符#x删除光标所在位置的#个字符X(shift+x)删除光标所在位置前面的一个字符#X删除光标所在位置前面的#个字符

  • 复制粘贴
    指令功能yy复制当前行#yy复制光标所在行往下数的#行p将缓冲区的字符粘贴到光标所在位置#p一次性粘贴#次pdd+p剪切

  • 其他
    指令功能u撤销上一次操作shift+~快速大小写切换r替换光标所在处的字符R替换光标所到之处的字符,直到按下ESC键为止

    Vim的末行模式命令集

在使用末行模式之前,需要保证此时处于正常模式,再按

shift+;(:)

进入末行模式。
指令功能set nu在文件中的每一行前面列出行号set nonu取消文件中的行号vs 文件多文件操作ctrl+w+w文件之间的切换w保存当前的文件q退出当前文件**!**强制执行某个指令

Vim的配置

通常我们可以自己配置vim,vim的配置步骤为

  • 在用户目录下创建一个文件.vimrc
  • 在文件中添加配置选项即可

配置选项可以百度,这里举例

  • 设置语法高亮:syntax on
  • 显示行号:set nu
  • 设置缩进的空格数:set shiftwidth = 4

Linux编译器 —— gcc/g++

vim编辑器编写代码后,c程序使用gcc编译器,c++程序使用g++编译器。
使用方法:

  • gcc xxx.c

默认生产的可执行文件为a.out,要想生成指定文件名可用-o+文件名。

  • gcc xxx.c -o xxx

在学习gcc编译器之前,先回顾一下c程序编译链接的过程:

  • 预处理(进行宏替换)
  • 编译(生成汇编)
  • 汇编(汇编转为机器码)
  • 链接(生成可执行文件或库文件)

gcc编译.c文件时,可以通过不同选项实现查看各个过程的编译结果。
示例程序test.c如下:

1 #include <stdio.h>2 #define NUM 103intmain()4{5// hello world6int a = NUM +1;7printf("NUM = %d\n", a);8}
  • 预处理过程
  • gcc -E test.c -o test.i

vim test.i 查看内容发现预处理过程包括宏定义,文件包含,条件编译和去注释等
在这里插入图片描述

  • 编译过程
  • gcc -S test.i -o test.s

vim test.s 查看内容发现,在这个阶段首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,把代码翻译成汇编语言
在这里插入图片描述

  • 汇编过程
  • gcc -c test.s -o test.o

vim test.o查看内容发现,程序已经从汇编指令转为机器码
在这里插入图片描述

  • 链接过程
  • gcc test.o -o test

在这里插入图片描述
链接过程主要是将自己写的程序与函数或第三方库关联起来,生成可执行程序。
这里函数库分为静态库和动态库两种。

  • 静态库是指编译链接的时候,将所有库文件的代码全部添加到可执行代码中,在运行时不需要库文件,但是静态库文件较大,其后缀为.a
  • 动态库在程序执行时由运行时链接文件加载库,节省系统的开销,动态库文件较小,其后缀为.so

gcc 默认生成的可执行文件是动态链接的,可以通过

file

命令查看验证。当然要想可执行文件是静态链接,可以通过

-static

命令。
在这里插入图片描述
***PS:有些服务器没有安装C语言的静态库,运行

gcc -static test.c -o test_static

会出现

can not found -lc

的错误,这里只需要运行

sudo yum install glibc-static

,安装静态库即可。***
gcc命令选项:
选项功能-E只激活预处理,不生产文件-S编译到汇编语言-c编译到目标代码-o生成指定文件-g生成调试信息-static采用静态链接库文件

Linux调试器 —— gdb

当使用gcc编译程序时,出现错误,又想和vs一样进行程序调试,怎么办呢?
在Linux下也有支持程序调试的调试器:gdb
用gdb调试的指令为:

  • gdb 文件

此时文件必须带有调试信息,使用-g指令让可执行程序带有调试信息。
在这里插入图片描述
使用ctrl+dquit退出
常用的调试命令:

list/l —— 显示源代码
r/run —— 运行程序
n/next —— 单条运行
s/step —— 进入函数调用
break/b 行号 —— 在某一行设置断点
info b —— 查看断点信息
delete breakpoints n —— 删除序号为n的断点
display 变量名 —— 跟踪查看变量的值
undisplay n —— 取消跟踪查看序号为n的变量
p 变量名 —— 打印变量值
finish —— 执行完当前函数
continue —— 执行到下一断点
until 行号 —— 执行到指定行

Linux项目管理器 —— make/Makefile

实现一个项目通常会有很多文件,Linux通过Makefile来管理这些文件的运行先后等复杂操作。
make是一个指令Makefile是一个文件,两者搭配使用,实现项目自动化构建。
Makefile文件的书写格式为:

目标文件:依赖文件
gcc [选项] 依赖文件 -o 目标文件

以mytest.c为例,若想把预处理、编译、汇编和链接过程的文件都生成,Makefile的书写为:
在这里插入图片描述
make命令运行结果:
在这里插入图片描述
要想删除make运行得到的可执行文件,则只需要在Makefile文件中加入:
在这里插入图片描述
然后执行

make clean

即可。
在这里插入图片描述
PS:

.PHONY

是一个修饰符号,让其后面的命令总是可执行

标签: c++ 开发语言 后端

本文转载自: https://blog.csdn.net/weixin_42301369/article/details/123118182
版权归原作者 Sherry-77 所有, 如有侵权,请联系我们删除。

“给自己一首歌的时间学习来Linux基本开发工具”的评论:

还没有评论