3、Linux基础环境搭建:安装Ubuntu虚拟机、配置SSH、安装基础编译工具
说实话,做覆盖率分析这件事,Linux环境是绕不开的。我见过不少新手在Windows上折腾半天,最后发现工具链根本跑不起来——白白浪费一整天。所以这一章,咱们就把地基打牢。
3.1 为什么选Ubuntu?
你可能要问:Linux发行版那么多,为什么偏偏选Ubuntu?
我个人习惯用Ubuntu LTS版本,原因有三:
- 社区活跃:遇到问题,Google一下基本都有答案
- 包管理成熟:apt-get 用起来顺手,依赖关系处理得不错
- 覆盖率工具兼容性好:gcov、lcov、gcovr 这些工具在Ubuntu上都是原生支持
我在项目中遇到过有人用CentOS,结果装个lcov还得编译源码,折腾半天。Ubuntu的话,一条命令就搞定。
3.2 安装Ubuntu虚拟机
咱们用VirtualBox来装。为什么不用VMware?因为VirtualBox免费,而且够用。
3.2.1 下载镜像
去Ubuntu官网下载22.04 LTS桌面版。别下服务器版,桌面版自带图形界面,新手友好。
3.2.2 创建虚拟机
打开VirtualBox,点「新建」。配置建议如下:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 内存 | 4GB(4096MB) | 低于2GB会卡,高于8GB没必要 |
| CPU核心 | 2核 | 覆盖率分析是CPU密集型,但虚拟机里给太多也没用 |
| 硬盘 | 40GB(动态分配) | 实际用不了这么多,但留点余量 |
| 网络 | 桥接模式 | 方便后面SSH连接 |
嗯,这里要注意:硬盘选「动态分配」而不是「固定大小」。虽然性能差一点点,但省空间。你想想看,40GB固定分配,实际只用10GB,多浪费。
3.2.3 安装系统
启动虚拟机,选择刚才下载的iso文件。安装过程很简单,一路下一步就行。唯一要注意的是:
- 语言选中文(方便看提示)
- 用户名别用中文,后面编译会出问题
- 密码记好,忘了就麻烦了
3.3 配置SSH
为什么要配SSH?因为后面我们要在宿主机上远程操作虚拟机。你总不想每次都打开VirtualBox窗口吧?
3.3.1 安装SSH服务
打开终端,执行:
sudo apt update
sudo apt install openssh-server -y
装完以后,检查一下服务状态:
sudo systemctl status ssh
看到绿色的「active (running)」就对了。
3.3.2 配置静态IP
默认是DHCP,每次重启IP都会变。我建议设成静态IP,省得每次都要查。
编辑网络配置文件:
sudo vim /etc/netplan/01-network-manager-all.yaml
改成这样:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
注意:IP地址要根据你自己的网段来改。我习惯用192.168.1.x段,你家里可能是192.168.0.x或者10.0.0.x。
保存后应用:
sudo netplan apply
3.3.3 测试SSH连接
在宿主机上(Windows用PowerShell,Mac/Linux用终端):
ssh 用户名@192.168.1.100
输入密码,能连上就成功了。
ssh-keygen -t rsa -b 4096ssh-copy-id 用户名@192.168.1.100
3.4 安装基础编译工具
覆盖率分析离不开编译工具链。咱们要装的东西不多,但都是必须的。
3.4.1 安装GCC和G++
sudo apt install build-essential -y
这条命令会安装gcc、g++、make等一堆工具。验证一下:
gcc --version
g++ --version
make --version
看到版本号就对了。
3.4.2 安装覆盖率工具
sudo apt install gcov lcov -y
gcov是GCC自带的,但lcov需要单独装。lcov是gcov的增强版,能生成HTML报告。
3.4.3 安装其他辅助工具
这些不是必须的,但我建议装上:
- git:版本管理,后面写代码用
- vim:编辑器,改配置文件方便
- cmake:构建工具,有些项目用这个
sudo apt install git vim cmake -y
3.5 验证环境
写个简单的C程序测试一下:
// test.c
#include <stdio.h>
int main() {
printf("Hello, Coverage!\n");
return 0;
}
编译并运行:
gcc -fprofile-arcs -ftest-coverage test.c -o test
./test
gcov test.c
如果看到生成了 test.gcno 和 test.gcda 文件,说明环境没问题。
-fprofile-arcs -ftest-coverage 这两个参数,gcov才能正常工作。我刚开始做覆盖率时忘了加,折腾了半天才发现。
3.6 本章知识体系
下面这张图帮你理清本章的核心逻辑:
这张图把本章内容串起来了。说白了就是三步走:装系统、配远程、装工具。每一步都有坑,但按我的经验走,基本不会出问题。
我曾经在配置SSH时卡了半天,后来发现是防火墙没关。Ubuntu默认防火墙是关闭的,但如果你之前开过,记得用 sudo ufw disable 关掉。
好了,环境搭好了,下一章咱们就开始真正接触覆盖率分析工具了。
可可精品资料库