1、包管理器 yum
CentOS 一般使用 yum 来下载软件,Ubuntu 则使用 apt。
1.1 软件包的依赖
yum 会解决包的依赖问题(即一起帮你下载)。
Linux 基础开发工具,涵盖包管理器 yum、编辑器 vim、编译器 gcc/g++、构建工具 make/Makefile、版本控制 git 以及调试器 gdb/cgdb。内容包括软件安装与依赖处理、vim 的各种模式与快捷键、C/C++ 编译流程详解、Makefile 编写规范、Git 基本操作以及 GDB 调试技巧。文章基于 CentOS 7.9 环境,适合初学者搭建 Linux 开发环境。

CentOS 一般使用 yum 来下载软件,Ubuntu 则使用 apt。
yum 会解决包的依赖问题(即一起帮你下载)。
Linux 通过内置链接下载软件,由于网络限制,内地社区会拷贝资源并使用自己的链接。
| 镜像站 | 官网 | 支持发行版 |
|---|---|---|
| 清华大学 | https://mirrors.tuna.tsinghua.edu.cn | CentOS, Ubuntu, Debian, Arch, EPEL |
| 阿里云 | https://mirrors.aliyun.com | CentOS, Ubuntu, Docker |
| 华为云 | https://mirrors.huaweicloud.com | CentOS, Ubuntu |
| 网易 | http://mirrors.163.com | Ubuntu, Debian |
| 中科大 | https://mirrors.ustc.edu.cn | Arch Linux, Docker |
可以通过更改 yum 的配置文件,更改下载链接。

yum list # 有哪些安装包
yum list | grep 安装包 # 查找指定的安装包
sudo yum install -y 安装包 # 下载指定的安装包 (-y 确认下载)
sudo yum remove -y 软件 # 删除指定的软件 (-y 确认删除)
注意: 安装和删除需要 root 权限。安装到系统目录(不是其他用户的家目录),任何人都能使用。
注意: Esc 键可能有点慢。
注意: 一旦退出,就不能撤销了。
可以先通过底行模式显示行号。
搜索:
可以通过底行模式删除高亮。
对于 yy,dd:
对于 x,X:
插入模式可以插入字符。
Ctrl+v:进入 V-Block 模式。
常用于批量注释:
批量删除注释:
在命令行:
vim 没有自动缩进,没有自动补齐等等,用起来不太方便,需要一些配置。
这里推荐一个自动化配置 (自己配置比较麻烦):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注意:
如果要改成四个空格的缩进,vim 家目录下的 vimrc,都改成 4。
gcc/g++ 默认情况下会执行完整的编译流程,包括预处理、编译、汇编、链接这四个步骤,并最终生成可执行文件(或库)。
gcc 只能编译.c 文件,g++ 既能编译.c 文件也能编译.cpp 文件,其他基本相同,以下以 gcc 为例。
// 将 code.c 编译为 code 的两种格式
gcc code.c -o code // 常用
gcc -o code code.c
gcc -E code.c -o code.i
gcc -S code.i -o code.s
gcc -c code.s -o code.o
gcc -c code.c // 默认生成,同名的.o 文件
gcc code.o -o code
gcc -o code code.o // 或者
Linux 中,是 lib+ 库名 + 后缀。
注意: 自己写的可执行程序,需要指定目录,才能执行。./ (当前目录)
ldd 可执行文件或动态库,可以查看需要的动态库。
库可以理解为,.o 文件和.h 文件的集合。
一般把文件编译到.o 文件,再与库文件链接,形成可执行程序。
make 是命令,可以指定目标,默认执行当前目录下 Makefile 中的第一个目标。
Makefile 或 makefile,是文件 (包含编译的指令 或 各种自动化任务)。
Makefile 主要由以下三部分组成:
目标 (target): 依赖 (prerequisites) [TAB] 命令 (recipe)
main.o)clean)注意: 通过文件的 Modify(最近文件内容修改时间) 判断,是否更新。 默认没改依赖文件,就不会重新构建目标。这里会引出一个问题。如果
clean: rm -f *.o main
当执行 make clean 时,rm -f *.o main 会正常执行。
但是如果当前目录下恰好存在一个名为 clean 的文件或目录,make 会认为 clean 目标已经是最新的(因为 clean 没有依赖项),从而拒绝执行 rm 命令。
加上 .PHONY 的作用
.PHONY: clean
clean: rm -f *.o main
# 变量定义
CC := gcc
TARGET := myprogram
SRCS := main.c test.c # 空格隔开
# SRC := $(wildcard *.c) # 当前目录下所有的.c 文件
OBJS := $(SRCS:.c=.o) # 将 .c 替换为 .o
# 默认目标
$(TARGET): $(OBJS)
$(CC) -o $@ $^
# $@,是目标,$^,是所有的依赖
# 模式规则:编译 .c 到 .o,.c 为当前目录下的.c,只编译需要的.o
%.o: %.c
$(CC) -c $<
# 默认生成同名的.o 文件
# $<,是单个依赖,将.c 分别编译为.o
# 伪目标
.PHONY: clean
clean: rm -f $(OBJS) $(TARGET)
安装 git:
sudo yum install -y git
在 gitee 创建远端仓库,点击克隆/下载,复制 https 的地址,将远端仓库克隆到本地。
git clone https地址
可以多次 add,然后一次 commit,push。
运行下面的两个指令。
注意: 一个文件/目录,每次提交修改都需要 add,commit,push,Windows 的小乌龟第一次 add,commit,push,后面只需 commit,push,简化了而已。
gcc code.c -o code // gcc/g++默认 release 模式
gcc code.c -o code -g // -g 添加调试信息
sudo yum install -y gdb
sudo yum install -y cgdb
注意: 一般是在 run 之前打断点。
tip:回车——执行最近的 gdb 命令。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online