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桌面版。别下服务器版,桌面版自带图形界面,新手友好。

小提示: 下载时选 .iso 文件,别下错了。我见过有人下了 .img 文件,折腾半天挂载不上。

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免密登录。生成密钥对,把公钥传到虚拟机里,以后就不用输密码了。具体命令:
ssh-keygen -t rsa -b 4096
ssh-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 本章知识体系

下面这张图帮你理清本章的核心逻辑:

Linux基础环境搭建流程 安装Ubuntu虚拟机 下载ISO镜像 VirtualBox创建虚拟机 配置内存/CPU/硬盘 配置SSH远程连接 安装openssh-server 设置静态IP 测试SSH连接 安装基础编译工具 build-essential gcov + lcov git/vim/cmake 验证:编译测试程序 + gcov 三步走:装系统 → 配远程 → 装工具,最后验证收尾

这张图把本章内容串起来了。说白了就是三步走:装系统、配远程、装工具。每一步都有坑,但按我的经验走,基本不会出问题。

我曾经在配置SSH时卡了半天,后来发现是防火墙没关。Ubuntu默认防火墙是关闭的,但如果你之前开过,记得用 sudo ufw disable 关掉。

好了,环境搭好了,下一章咱们就开始真正接触覆盖率分析工具了。


可可精品资料库