Linux-基础开发工具

1.软件包管理器

1.1什么是软件包

• 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序.

• 但是这样太⿇烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包(可以理解成windows上

的安装程序)放在⼀个服务器上, 通过包管理器可以很⽅便的获取到这个编译好的软件包, 直接进⾏安装.

• 软件包和软件包管理器, 就好⽐ "App" 和 "应⽤商店" 这样的关系.

• yum(Yellow dog Updater, Modified)是Linux下⾮常常⽤的⼀种包管理器. 主要应⽤在Fedora,

RedHat, Centos等发⾏版上.

• Ubuntu:主要使⽤apt(Advanced Package Tool)作为其包管理器。apt同样提供了⾃动解决依

赖关系、下载和安装软件包的功能。

1.2Linux软件生态

• Linux下载软件的过程(Ubuntu、Centos、other)

• 操作系统的好坏评估--- ⽣态问题

• 为什么会有⼈免费特定社区提供软件,还发布?还提供云服务器让你下载?

• 软件包依赖的问题

• 国内镜像源

以下是⼀些国内Linux软件安装源的官⽅链接[由⽂⼼⼀⾔⽣成]:

  1. 阿⾥云官⽅镜像站

◦ 官⽅链接:https://developer.aliyun.com/mirror/

◦ 阿⾥云提供了丰富的Linux发⾏版镜像,包括CentOS、Ubuntu、Debian等,⽤⼾可

以通过该镜像站快速下载和更新软件包。

  1. 清华⼤学开源软件镜像站

◦ 官⽅链接:https://mirrors.tuna.tsinghua.edu.cn/

◦ 清华⼤学镜像站提供了多种Linux发⾏版的镜像,以及Python、Perl、Ruby等编程语

⾔的扩展包。该镜像站还提供了丰富的⽂档和教程,帮助⽤⼾更好地使⽤这些软件

包。

  1. 中国科学技术⼤学开源镜像站

◦ 官⽅链接:http://mirrors.ustc.edu.cn/

◦ 中科⼤镜像站提供了多种Linux发⾏版的镜像,以及常⽤的编程语⾔和开发⼯具。⽤⼾

可以通过该镜像站⽅便地获取所需的软件包和⼯具。

  1. 北京交通⼤学⾃由与开源软件镜像站

◦ 官⽅链接:https://mirror.bjtu.edu.cn/

◦ 北交⼤镜像站提供了多种Linux发⾏版的镜像,以及相关的软件仓库和⼯具。该镜像站

还提供了详细的⽂档和指南,帮助⽤⼾配置和使⽤这些软件源。

  1. 中国科学院软件研究所镜像站(ISCAS)

◦ 官⽅链接:http://mirror.iscas.ac.cn/

◦ ISCAS镜像站提供了多种Linux发⾏版、编程语⾔和开发⼯具的镜像。⽤⼾可以通过该

镜像站快速获取所需的软件包和更新。

  1. 上海交通⼤学开源镜像站

◦ 官⽅链接:https://ftp.sjtu.edu.cn/

◦ 上海交⼤镜像站提供了丰富的Linux软件资源,包括多种发⾏版的镜像和软件仓库。⽤

⼾可以通过该镜像站⽅便地下载和安装所需的软件包。

  1. ⽹易开源镜像站

◦ 官⽅链接:http://mirrors.163.com/

◦ ⽹易镜像站提供了多种Linux发⾏版的镜像,以及相关的软件仓库和⼯具。该镜像站还

提供了便捷的搜索功能,帮助⽤⼾快速找到所需的软件包。

此外,还有⼀些其他的国内镜像源,如搜狐开源镜像站等,但可能由于时间变化或政策调

整,部分镜像站的链接或状态可能有所变动。因此,建议⽤⼾在使⽤前访问官⽅⽹站或咨询

相关社区以获取最新的信息和帮助。

1.3具体操作

1.3.1查看软件包

通过 yum list 命令可以罗列出当前⼀共有哪些软件包. 由于包的数⽬可能⾮常之多, 这⾥我们需要使⽤grep 命令只筛选出我们关注的包. 例如:

1.3.2安装软件

1.3.3卸载软件

1.3.4注意事项

1.4安装源

更新安装源,现场说明原理即可。云服务器不⽤考虑,因为软件源都是国内的了.

好玩的命令:https://blog.csdn.net/xiaoxiaosutang/article/details/141053674

2.Vim编辑器

2.1vim的使用

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以运⾏于x window、 mac os、 windows。我们课堂上,统⼀按照vim来进⾏讲解。

2.2vim的基本概念

vim的三种模式(其实有好多模式,⽬前掌握这3种即可),分别是命令模式(command mode)、插⼊模式(Insert mode)和底⾏模式(last line mode),各模式的功能区分如下:

2.3vim的基本操作

2.4vim正常模式命令集

2.5vim底行模式命令集

2.6vim操作总结

2.7简单的vim配置

参考资料
GitHub - wsdjeg/vim-galore-zh_cn: Vim 从入门到精通

3.编辑器gcc/g++

3.1背景知识

3.2gcc编译选项

格式 gcc [选项] 要编译的⽂件 [选项] [⽬标⽂件]

3.2.1预处理(进行宏编译)

3.2.2编译(生成汇编)

3.2.3汇编(生成机器可识别的代码)

3.2.4链接(生成可执行文件或库文件)

3.3动态链接和静态链接

在我们的实际开发中,不可能将所有代码放在⼀个源⽂件中,所以会出现多个源⽂件,⽽且多个源⽂件之间不是独⽴的,⽽会存在多种依赖关系,如⼀个源⽂件可能要调⽤另⼀个源⽂件中定义的函数,但是每个源⽂件都是独⽴编译的,即每个*.c⽂件会形成⼀个*.o⽂件,为了满⾜前⾯说的依赖关系,则需要将这些源⽂件产⽣的⽬标⽂件进⾏链接,从⽽形成⼀个可以执⾏的程序。这个链接的过程就是静态链接。

静态链接的缺点很明显:

动态链接的出现解决了静态链接中提到问题。动态链接的基本思想是把程序按照模块拆分成各个相对独⽴部分,在程序运⾏时才将它们链接在⼀起形成⼀个完整的程序,⽽不是像静态链接⼀样把所有程序模块都链接成⼀个单独的可执⾏⽂件。

动态链接其实远⽐静态链接要常⽤得多。⽐如我们查看下 hello 这个可执⾏程序依赖的动态库,会发现它就⽤到了⼀个c动态链接库:

在这⾥涉及到⼀个重要的概念: 库

3.4动静态库

• Linux下,动态库XXX.so, 静态库XXX.a

• Windows下,动态库XXX.dll, 静态库XXX.lib

⼀般我们的云服务器,C/C++的静态库并没有安装,可以采⽤如下⽅法安装

3.5gcc其他常用选项

4.自动化构建-make/Makefile

4.1背景

4.2基本使用

4.3推导过程

4.4适度扩展语法

5.Linux第一个系统程序-进度条

5.1回车与换行

回车-\n

换行-\r

5.2行缓冲区

\n会刷新缓冲区

\r不会刷新缓冲区,需要手动刷新

5.3倒计时程序

5.4进度条代码

6.版本控制器Git

6.1版本控制器

6.2git简史

6.3安装git

1yum install git

2.apt install git

6.4在Github上创建项目

自行上网创建

注册账号

创建项目

1.登陆成功后,进⼊个⼈主⻚,点击左下⽅的Newrepository按钮新建项⽬

2.然后跳转到的新⻚⾯中输⼊项⽬名称(注意,名称不能重复,系统会⾃动校验.校验过程可能会花费⼏ 秒钟).校验完毕后,点击下⽅的Create repository按钮确认创建.

3.在创建好的项⽬⻚⾯中复制项⽬的链接,以备接下来进⾏下载.

下载项目到本地

创建好一个放置代码的目录

git clone 刚刚建立好的项目链接

6.5三板斧

1.git add

将代码放到刚才下载好的⽬录中

git add [⽂件名]

将需要⽤git管理的⽂件告知git

2.git commit

提交改动到本地

git commit -m "XXX"

最后的"."表⽰当前⽬录提交的时候应该注明提交⽇志,描述改动的详细内容.

3.git push

同步到远端服务器上

git push

需要填⼊⽤⼾名密码.同步成功后,刷新Github⻚⾯就能看到代码改动了.

配置免密码提交

git本地免密码和账号pull、push_没有git账号怎么拉代码-CSDN博客

7.调试器-gdb/cgdb的使用

7.1样例代码

7.2预备

程序的发布⽅式有两种, debug 模式和 release 模式。

Linux gcc/g++ 出来的⼆进制程 序,默认是 release 模式。

要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候,加上 -g 选项,如果没有添加,程序⽆法被 编译。

7.3常见使用

7.4操作指令加餐

7.4.1watch

执⾏时监视⼀个表达式(如变量)的值。如果监视的表达式在程序运⾏期间的值发⽣变化,GDB会暂 停程序的执⾏,并通知使⽤者

7.4.2set var确定问题原因

更改⼀下标志位,假设我们想得到 +-result

7.4.3条件断点

添加条件断点

给已经存在的端点新增条件

相关推荐
好多知识都想学4 分钟前
第二章Linux 命令概述
linux·运维·服务器
风莫寻6 分钟前
【Troubleshot】Qt 长按按键 keyPressEvent keyReleaseEvent 自动重复问题
开发语言·qt
ZC·Shou6 分钟前
Rust 之一 基本环境搭建、各组件工具的文档、源码、配置
开发语言·rust·cargo·rustc·rustup·clippy·rustfmt
wo3258661456 分钟前
浪潮英政服务器CS5420H2配置阵列时报错The reguested command has inualid arguments.解决方法
运维·服务器
Hello.Reader8 分钟前
深入理解 Rust 中的模式匹配语法
开发语言·rust
最胖的小仙女12 分钟前
通过动态获取后端数据判断输入的值打小
开发语言·前端·javascript
熊峰峰12 分钟前
Linux第0节:Linux环境的搭建
linux·运维·服务器
一点多余.14 分钟前
nginx的使用
运维·nginx
阿波拉17 分钟前
AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas’问题解决
开发语言·python
鸭梨山大。34 分钟前
linux命令-iptables与firewalld 命令详解
linux·运维·网络