第4天:Linux开发环境搭建
🧰 第4天:Linux开发环境搭建
一、GCC 编译器
📌 1. 什么是 GCC?
GCC(GNU Compiler Collection)是 GNU 工程开发的编译器集合,主要支持 C、C++、Fortran 等语言的编译,是 Linux 系统中的默认编译器。
🛠️ 2. 安装与配置(以 Ubuntu 为例)
sudo apt update
sudo apt install build-essential
build-essential
包含了 GCC、G++、Make 等常用编译工具。
✅ 3. 验证是否安装成功
gcc --version
二、Make 工具详解
📌 1. Make 是什么?
Make 是一个构建自动化工具。它通过读取 Makefile
文件中的依赖关系和命令来决定如何编译项目。
📄 2. Makefile 结构与例子
项目文件结构:
project/
├── main.c
└── Makefile
main.c:
#include <stdio.h>
int main() {printf("Hello, Make!\n");return 0;
}
Makefile:
main: main.ogcc -o main main.omain.o: main.cgcc -c main.cclean:rm -f *.o main
使用流程:
make # 编译项目
./main # 运行
make clean # 清理目标文件
🧠 3. Make 的优缺点
优点 | 缺点 |
---|---|
快速直接 | 跨平台支持差 |
简单易上手 | 手动维护依赖和目标较麻烦 |
不需要额外工具 | 结构不清晰,难以维护大型项目 |
三、CMake 构建系统详解
📌 1. CMake 是什么?
CMake 是一个跨平台的自动化构建系统生成工具,可以为不同平台生成构建文件(如 Unix 下的 Makefile,Windows 下的 Visual Studio 工程文件等)。
🧱 2. 使用步骤与示例
项目结构:
project/
├── main.c
├── CMakeLists.txt
main.c:
#include <stdio.h>
int main() {printf("Hello from CMake!\n");return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(MyApp)
add_executable(main main.c)
构建命令:
mkdir build
cd build
cmake ..
make
./main
🔨 3. 添加多个源文件 & 头文件目录
project/
├── include/
│ └── hello.h
├── src/
│ └── hello.c
├── main.c
└── CMakeLists.txt
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(MyApp)include_directories(include)
file(GLOB SOURCES "src/*.c" "main.c")add_executable(myapp ${SOURCES})
🧠 4. CMake 常用命令总结
命令 | 作用 |
---|---|
project(<name>) | 定义项目名 |
add_executable(<name> ...) | 定义可执行文件及其源文件 |
include_directories() | 添加头文件搜索路径 |
file(GLOB ...) | 自动收集所有源文件 |
set(CMAKE_C_STANDARD 11) | 设置 C 语言标准 |
四、Make vs CMake 对比
特性 | Make | CMake |
---|---|---|
适用范围 | 小型项目,需手写依赖 | 大中型项目,自动管理依赖 |
构建文件 | 手写 Makefile | 自动生成 Makefile、Visual Studio 工程等 |
可维护性 | 差,复杂项目容易混乱 | 高,结构清晰,支持模块化构建 |
跨平台支持 | 弱 | 强,适用于多平台(Linux/Windows/macOS) |
项目规模支持 | 小型 | 中大型或复杂依赖项目 |
IDE 集成 | 一般 | 完美支持 CLion、VSCode、VS 等 |
五、Git 基本操作详解
🧭 1. 常用命令汇总
功能 | 命令 |
---|---|
克隆 | git clone https://github.com/user/repo.git |
添加 | git add . |
提交 | git commit -m "描述" |
推送 | git push origin main |
拉取 | git pull origin main |
创建分支 | git branch dev |
切换分支 | git switch dev |
合并分支 | git switch main + git merge dev |
📊 2. Git 工作原理图
六、热门面试题
❓1. 工作区、暂存区、版本库的区别?
✅ 答:
- 工作区:当前可见、正在编辑的文件
- 暂存区(Index):用
git add
添加后等待提交的内容 - 本地仓库:使用
git commit
后的历史版本
❓2. merge 和 rebase 的区别?
✅ 答:
操作 | 特点 |
---|---|
merge | 创建一个新的合并提交,保留所有分支历史 |
rebase | 将一条分支上的提交“移动”到另一分支之后 |
面试建议:理解 merge 更安全,rebase 更整洁,但不适用于公共历史的分支。
❓3. 如何解决 Git 冲突?
✅ 答:
- 打开冲突文件,查找
<<<<<<<
标记; - 保留正确代码,删除冲突标记;
- 使用命令解决冲突:
git add .
git commit
❓4. CMake 与 Make 的关系?
✅ 答:
CMake 是构建系统“生成器”,它生成适用于目标平台的构建文件(如 Makefile)。Make 是构建工具,它执行这些构建文件完成实际的编译工作。