当前位置: 首页 > news >正文

第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 对比

特性MakeCMake
适用范围小型项目,需手写依赖大中型项目,自动管理依赖
构建文件手写 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 冲突?

答:

  1. 打开冲突文件,查找 <<<<<<< 标记;
  2. 保留正确代码,删除冲突标记;
  3. 使用命令解决冲突:
git add .
git commit

❓4. CMake 与 Make 的关系?

答:

CMake 是构建系统“生成器”,它生成适用于目标平台的构建文件(如 Makefile)。Make 是构建工具,它执行这些构建文件完成实际的编译工作。


相关文章:

  • 【JavaScript】详讲运算符--算术运算符
  • 时间自动填写——电子表格公式的遗憾(DeepSeek)
  • 品融电商:领航食品类目全域代运营,打造品牌增长新引擎
  • EasySearch 服务昨天还好好的,为什么今天突然访问不了了?
  • Java面试题汇总
  • FI固定资产折旧码的功能用途及其配置介绍
  • 【CSS】层叠,优先级与继承(三):超详细继承知识点
  • 推荐系统排序阶段核心要点:多目标排序模型详解
  • UnoCSS原子CSS引擎-前端福音
  • 15.FineReport动态展示需要的列
  • 数据库-基本概述 和 SQL 语言
  • 记录一次OGG进程abended,报错OGG-01431、OGG-01003、OGG-01151、OGG-01296问题的处理
  • C++入门基础(2)
  • Generative AI for Krita - Krita 生成式 AI 插件
  • 【QT】信号与槽中多个按钮(pushbutton)共用一个槽函数的两种实现方式
  • centos7部署k8s集群
  • pytorch(gpu版本安装)
  • 记录一下线性回归的学习
  • iThenticate英文查重系统怎么用?
  • LeetCode-417. 太平洋大西洋水流问题
  • 继加州后,美国又有11州起诉特朗普政府滥用关税政策“违法”
  • 最高法:家长以监督为名虚构事实诋毁学校的,应承担侵权责任
  • 巴基斯坦航天员选拔工作正在进行,1人将以载荷专家身份参加联合飞行
  • 拍北京地铁上的读书人第七年:数字风吹散读书人了吗?
  • 中国英国商会政府事务主席陶克瑞:重庆经济成就瞩目,中英合作机遇无限
  • 对话地铁读书人|豪宅房产经纪人:读书使我免于抑郁