VMware虚拟机搭建Linux C++开发环境:CentOS与Ubuntu完整安装指南

📅 发布时间:2026/10/13 3:39:09
VMware虚拟机搭建Linux C++开发环境:CentOS与Ubuntu完整安装指南
很多刚学C的朋友都会遇到同一个尴尬书买好了代码敲了两页结果连编译器都没有。Windows上虽然能装Visual Studio但很多C的底层知识点——编译链接过程、Makefile、GCC命令行、系统调用——和Linux的关系太紧密了。绕不开就得在Linux下练。可一听说要装双系统不少人就犹豫了怕把现有系统搞坏、怕驱动出问题、怕来回重启耽误事。所以我一直推荐身边的朋友先用VMware虚拟机跑一个Linux系统。这篇文章就是《在VMware虚拟机中搭建C开发环境》系列的第一篇先把CentOS和Ubuntu这两个主流发行版从下载到安装完整走一遍让你手上先有一台能用的Linux虚拟机。装好之后下一篇我们再集中搞定GCC、GDB、CMake、VS Code这些C开发工具链。1. 先想清楚为什么是VMware虚拟机而不是双系统或WSL我在指导朋友入门C的时候第一个问题经常是“我为什么非得用虚拟机用WSL不也能练Linux命令吗”这个问题得好因为WSL确实能用但它和“真实的Linux环境”之间还有一段距离尤其是做C开发时有些差距会很影响学习效果。1.1 三种方案对比双系统、WSL、VMware先把三种常见路线摊开来说。双系统就是笔记本上同时装Windows和Linux开机时自己选进哪个。好处是性能完全不受损失硬件资源全部给到当前系统缺点是切换系统必须重启而且分区操作对新手有风险一不留神就可能把引导搞坏。WSLWindows Subsystem for Linux是Windows自带的一个Linux兼容层微软官方维护。它在Windows里跑一个Linux用户态环境不需要虚拟机硬件层启动就是几秒钟的事开个终端就能敲Linux命令非常方便。VMware虚拟机则是真正在一个软件里完整模拟出一台电脑的硬件环境CPU、内存、硬盘、网卡都是在虚拟层模拟出来的在这台“虚拟电脑”里装一个完整的Linux系统。它和宿主机互不影响系统坏了随时删掉重装磁盘和内存是动态划分的随时可以扩展。三者比较起来看这样一张表就明白了对比项双系统WSLVMware虚拟机性能最高接近物理机中等但日常够用略低于物理机开发足够系统隔离性差分区操作有风险中共享Windows文件系统最强独立虚拟硬盘切换成本每次重启切换秒级切换从打开到登录1-2分钟是否影响宿主机有风险引导、分区无无适合C学习适合但风险高能跑但偏“阉割感”最适合新手和教学1.2 为什么C入门阶段特别适合VMwareC这门语言的特殊之处在于它和底层的关系特别近。你写了一个小项目用GCC命令手动敲出.o文件再用-o链接成可执行文件这个过程中你能亲眼看到编译、汇编、链接每一步发生了什么。WSL也能做到这一点但它并不是完完整整的Linux内核——它的文件系统、启动流程、网络栈都和原生Linux有差异。真到了写网络编程、多线程、调试系统调用参数的时候WSL经常会在一些隐秘的地方表现得“不太对劲”然后你就得花时间排查环境问题而不是代码问题。VMware里的Linux则是一台完整的、和服务器完全一致的操作系统。你在里面写的代码拿到一台真正的云服务器上几乎可以无缝跨过去你踩过的坑、用过的命令、习惯的环境全部是可迁移的真实经验。还有一个对新手特别重要的点虚拟机快照功能。装完系统之后拍一张快照之后就算你gcc、cmake、环境变量弄得稀巴烂一句话就能恢复到安装完的状态这可比双系统重装省心太多。2. 准备工作VMware工具安装、BIOS虚拟化与镜像获取在真正创建虚拟机之前有三件事值得提前确认好不然创建过程做到一半才发现环境不满足要求会很耽误时间。2.1 VMware Workstation的安装与版本选择目前VMware Workstation分两个大版本Windows下用的Workstation Pro以及macOS下用的Fusion。如果你是在Windows上折腾下载一个Workstation Pro即可。安装过程基本就是一路Next需要注意装到“自定义安装路径”时尽量选择非C盘目录因为虚拟机的虚拟磁盘文件动辄几十GB全堆在C盘很容易爆盘。装完之后启动软件确认一下“帮助 - 关于”里的许可证状态。VMware虽然可以试用但我建议有条件就注册一个个人使用授权避免试用期过期后虚拟机无法启动。另外每次新版本发布时不要急着第一时间升级等个一两周再升因为新版偶尔会踩到一些和当前镜像兼容性的小问题。2.2 确认CPU虚拟化已经开启这是很多新手最容易忽略的一步。VMware属于Type-2虚拟机寄居在宿主操作系统之上的虚拟机软件它需要CPU硬件虚拟化技术的支持。大多数现代CPUIntel的VT-x和AMD的AMD-V默认是开启的但也有不少笔记本尤其是品牌机出场时BIOS里把这个功能关了。判断方法很简单打开任务管理器 - 性能标签页看右下角“虚拟化”状态。如果显示“已启用”可以直接往下走如果显示“已禁用”需要重启电脑进BIOS开机反复按F2、Del或F10不同品牌略有区别在CPU Configuration或者Security选项里找“Intel Virtualization Technology”或“AMD SVM Mode”改成Enabled保存退出。注意这个步骤不做好后面创建虚拟机时会直接报“此主机支持Intel VT-x但Intel VT-x处于禁用状态”之类的错误根本进不了安装界面。2.3 镜像选择与下载每个发行版的版本策略镜像就是Linux系统的安装文件相当于Windows安装盘里的.iso文件。下载渠道方面首选各发行版的官方网站然后根据自己网络情况选一个国内镜像站点速度差距会非常明显。Ubuntu的版本策略Ubuntu每年4月和10月发布新版本但LTSLong Term Support长期支持版只出现在偶数年份的4月版本比如22.04、24.04。LTS版本有五年支持周期普通版本只有九个月。C开发环境配置一次能用很久强烈建议只下LTS版。本文以22.04 LTS为例后续操作在24.04 LTS上也通用。拿镜像时服务器版Server和桌面版Desktop的区别在本文后面会细说先记住初学者选桌面版即可。CentOS的版本现状CentOS是红帽系里的经典发行版特点是稳定、保守。官方目前把CentOS Linux 7停止维护了CentOS Linux 8也到期了当前主线是CentOS Stream。看完这个现状给新人的建议是如果你是想跟着教科书很多经典Linux教程都是以CentOS 7为蓝本写的CentOS 7依然可以下载使用如果你想学目前社区活跃度的方向就直接用CentOS Stream 9因为它和RHEL 9的演进路径是一致的软件包策略也更现代化。本文两个版本都会提到默认操作以CentOS Stream 9为例同时标注CentOS 7的差异。下载镜像时进入官网后选择“Download”通常会有“DVD ISO”和“Minimal ISO”。C开发环境建议选DVD版本它自带大量开发工具包包括GCC安装完成后不用联网就能编译代码Minimal版本则只是一个最基础的系统很多工具都要后期手动装对新手不太友好。3. 最关键的一步正确创建VMware虚拟机镜像下载好之后打开VMware Workstation开始创建虚拟机。这一步别急着回车每一步都值得花点心思选对参数因为后面再改虽然也能改但磁盘和部分硬件设置改动起来比较麻烦。3.1 新建虚拟机向导与安装源选择点击“创建新的虚拟机”选择“典型推荐”即可。到“安装程序光盘映像文件”这一步把刚才下载的.iso挂载进去。这里要注意一个常踩的坑如果你选了“稍后安装操作系统”后续还得手动挂镜像而且某些版本的VMware不会自动添加启动支持反而多了一步没用操作不如直接在这步就挂好。VMware会自动识别ISO里的系统类型但偶尔也会识别错。在“客户机操作系统”页面务必手动确认一下比如明明是Ubuntu却显示成了“Red Hat Enterprise Linux”这种情况我遇到过不止一次识别错会导致后续的兼容性配置不对。3.2 虚拟机硬件配置内存、CPU与磁盘分配这一步是很多人容易拍脑袋乱配的地方。我的建议是给出一套“保证够用、不浪费宿主资源”的基线配置配置项建议值说明内存4GB及以上C编译器GCC在编译大型项目时内存非常吃紧低于2GB会频繁swap处理器2核多于2核让编译并行度更高但不要让虚拟机占满所有核心磁盘40GBUbuntu/ 50GBCentOS系统本身开发工具包就会占掉10GB左右留出余量给未来代码和缓存网络NAT模式默认推荐虚拟机可通过宿主机上网但主机访问不到虚拟机内部服务内存这里多说一句如果你宿主机的内存只有8GB虚拟机分4GB其实有点勉强建议至少16GB物理内存再分4GB给虚拟机。如果实在紧张就分2GB但编译稍大一点的项目会明显变慢。磁盘磁盘格式保持默认的“将虚拟磁盘拆分成多个文件”就好方便以后移动和备份。3.3 网卡模式选择NAT与桥接的区别新手最困惑的往往就是“网络连接”这一项。VMware有三种常见网络模式桥接模式虚拟机像一台独立电脑接到和宿主机同一个局域网上有自己的IP局域网内其他机器能直接访问它。NAT模式虚拟机通过宿主机上网IP是VMware内部虚拟网段分配的外部设备看不到虚拟机。仅主机模式虚拟机只能和宿主机通信不能访问外部网络。从C开发学习角度来说初期用NAT就够了能联外网更新软件包环境也干净。等后面做网络编程、搭建服务器调试时再改成桥接模式更容易测试比如在浏览器里访问虚拟机里起的Web服务。两个模式切换只是点一下按钮的事不用重装系统。4. CentOS安装全程详解从引导界面到GCC验证CentOS系列的安装器是Anaconda界面风格和Windows安装程序差别不大只要理解每一步的含义就能顺利走完。下面以CentOS Stream 9为例走一遍。4.1 引导界面与语言、时区设置从ISO引导后进入界面第一个选项是“Install CentOS Stream 9”如果你看到的是“Test this media”选Install即可。语言选择建议选“English”不是英文水平不行而是因为中文翻译在某些系统工具上有滞后英文界面在后续搜索错误信息、对照文档时最准确这一点对C开发非常关键——因为你后面会遇到各种编译错误搜索的时候英文关键词的命中率高得多。时区建议直接选“Asia/Shanghai”系统默认会用UTC / GMT时区如果你选了其他时区后面写日志、查时间时会混乱。4.2 软件选择必须勾选“Development Tools”这是CentOS安装里和C开发关系最密切的一个选项也是全篇最容易踩坑的地方。CentOS默认的“最小安装”只带基本系统里面连GCC都没有。点开“软件选择”建议选择“带GUI的服务器”或者“工作站”取决于你需不需要图形界面然后在右侧附加组件里务必勾选“Development Tools”开发工具。这一个勾选会引入gcc、gcc-c、make、gdb、autoconf、flex、bison等一整套编译工具链后面装C环境能省下大量手动安装时间。如果第一次安装没勾这个后面也没有办法通过“系统设置”补回来只能命令行执行dnf groupinstall Development Tools虽然也不难但等于重复下了一大堆依赖包浪费时间。4.3 分区方案自动分区还是手动分区对新手我的建议是直接使用“自动配置分区”。Anaconda默认的LVM逻辑卷管理方案在1TB以内的所有磁盘上都没问题LVM的好处是以后空间不够可以在线扩展。完全手动分区适合有经验的人例如你打算把/home单独分一个区、给/opt挂一个专门的数据盘这种灵活度在服务器场景才有意义。C开发学习场景完全不涉及裸设备和高性能IO自动分区省心且足够。唯一需要留意的是各版本CentOS在“磁盘选择”页面会把宿主的磁盘也列出来千万别选错盘。不过虚拟机环境里通常只会看到一块虚拟磁盘比如/dev/sda确认一下就无所谓。4.4 网络和主机名设置这一页看起来无关紧要但如果你不设置安装出来的系统默认网络是“连不上”的。在“网络和主机名”页面里打开“以太网右侧的开关”确保状态是“已连接”同时给主机取一个简单好记的方案比如centos-dev。DHCP模式在这里直接用就可以IP地址后面随时可以改。4.5 安装完成后的GCC验证等待安装过程跑完、重启首次登录看到的是终端界面或图形登录界面。在终端里输入whoami确认以普通用户身份登录后切换到rootsu -然后验证开发工具是否装好了gcc --version g --version make --version这几条命令正常输出的话你手里这台CentOS虚拟机就已经具备C编译能力了。如果提示command not found则说明你安装时漏掉了“Development Tools”这时执行dnf groupinstall Development Tools等它装完再验证一次就好。这个命令在联网状态下会自动下载几百MB的依赖包耐心等就行。5. Ubuntu安装全程详解Desktop版与服务版的取舍Ubuntu的安装路径和CentOS不一样但它的图形化安装程序做得更流程化上手门槛更低。这里重点讲两个容易被忽略的决策以及C开发视角下的几个注意点。5.1 Ubuntu Desktop还是Server关键看你的使用习惯Ubuntu Desktop自带GNOME桌面环境开箱即用有图形界面浏览器、文件管理器、文本编辑器一应俱全对完全没接触过Linux的C新手非常友好。Server版本则没有图形界面只有纯命令行终端资源占用小更接近生产服务器环境。C开发学习阶段我更推荐Desktop版原因很简单你还要用VS Code、看PDF文档、开浏览器查资料一个桌面环境能省很多切来切去的时间。不要在“要不要用命令行装一下”这种事上给自己增加无谓的挫败感——等你在Desktop版上把C编译流程跑熟了再用Server版装一遍就是水到渠成的事情。下载时记得选“Desktop image”文件名通常是ubuntu-22.04.x-desktop-amd64.iso这种格式。5.2 安装过程的关键节点语言、键盘布局与最小安装用UltraISO后烧录或者直接在VMware里挂载ISO启动。引导之后选择“Install Ubuntu”进入正式安装。你需要走过几个节点语言这里和CentOS不同Ubuntu的中文支持做得相当好用中文安装完全不影响后续搜索所以按自己习惯选即可。键盘布局保持默认“English (US)”不要选拼音输入法相关的布局否则敲快捷键的时候会莫名多出个输入法切换步骤。更新和其他软件页面中“安装类型”推荐选“最小安装”Minimal installation这样不会预装大量用不上的办公软件和游戏同时把“安装第三方软件”勾取消掉这个选项通常和显卡驱动有关在虚拟机里不需要反而可能拉慢安装。分区这一步Ubuntu比CentOS简单得多选择“清除整个磁盘并安装Ubuntu”注意这里“磁盘”指的是VMware虚拟出来的那块虚拟磁盘不会影响宿主机文件。加密选项建议不加密码否则每次开机都要输两遍解密口令学习时纯属折腾。5.3 首次登录后的基础清理与系统更新安装完成重启进入Ubuntu桌面后先打开终端执行一次系统更新sudo apt update sudo apt upgrade -y这个命令会把系统自带的软件包源索引刷新一遍并把仓库里能升级的包全部升到最新版。C开发中很多诡异报错都来源于“软件源里的包版本太旧”和“编译器版本太高”两头不一致先把系统拉到一个最近状态能避开很多坑。顺手安装几个接下来肯定要用的开发基础设施sudo apt install -y build-essential gdb cmake git curlbuild-essential这个包是Ubuntu里编译工具的集合包装完它gcc、g、make就全部就位了。这套组合装完你可以自测一下g --version cmake --version都能输出版本号说明这台Ubuntu虚拟机已经能作为C开发环境使用了。6. 装完系统后的必修课增强工具、快照与网络配置系统和编译器都就位之后有几件“看起来不重要但实际很有用”的配置值得花十分钟搞定。它们直接影响你后续整个开发周期里的体验。6.1 安装增强工具VMware Tools与Open VM ToolsVMware Tools新版叫Open VM Tools是VMware虚拟机与宿主机之间的“桥梁”套件主要解决三个问题鼠标光标在虚拟机里卡住、屏幕分辨率不能自适应窗口大小、共享文件夹等功能不可用。在CentOS和Ubuntu上都推荐在安装完系统后第一时间安装它。两个系统上命令略不同Ubuntusudo apt install -y open-vm-tools open-vm-tools-desktopCentOSsudo dnf install -y open-vm-tools装完重启一次之后VMware窗里切换桌面时鼠标就不会像“困在窗口里”一样卡住了窗口拉大拉小屏幕分辨率还能跟着变。这一步没装之前你可能会觉得虚拟机“肉眼可见地卡”装了之后体验会瞬间好很多。如果你用的是旧版VMware或某个发行版支持不佳也可以走传统路径在VMware菜单栏选择“虚拟机 - 安装VMware Tools”然后在系统里挂载光盘运行安装脚本。不过新版本在联网条件下用Open VM Tools基本就够了更省事。6.2 快照给你的虚拟机上一份“后悔药”虚拟机最大的优势就是可以随心所欲地折腾而不必担心搞坏。快照就是把这些折腾的“后悔药”做到极致。系统刚装完、工具链自测通过那一刻在VMware菜单栏点击“虚拟机 - 快照 - 拍摄快照”命名成“系统干净已含开发工具”之类好认的名字。以后你配置环境变量、装软件包出了任何问题只要启动到VMware主界面右键虚拟机名选“快照 - 恢复”十几秒就能回到这个黄金状态。一个被我反复验证过的小经验是快照不要拍太频繁每次系统处于“可复现的、干净的、有下一步操作价值”的状态时再拍。拍多了反而分不清各个快照之间差了什么找起来费劲。6.3 网络配置DHCP够用但建议改成静态IP虚拟机里的IP地址默认通过DHCP自动分配。问题在于每次重启虚拟机它的IP都有可能变。如果你后面要在虚拟机里跑一个Web服务器或者SSH服务一变IP你就得回头重新查很烦。改成静态IP的方法是以Ubuntu 22.04为例sudo nano /etc/netplan/01-network-manager-all.yaml找到网卡配置写上network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: no addresses: - 192.168.174.10/24 routes: - to: default via: 192.168.174.2 nameservers: addresses: [114.114.114.114, 8.8.8.8]注意192.168.174.x是VMware默认NAT网段的示例你可以在VMware菜单“编辑 - 虚拟网络编辑器”里看到自己的实际网段。改完执行sudo netplan apply然后ip addr确认IP已经变成你设置的静态地址。CentOS 9的同学则改/etc/NetworkManager/system-connections/下的配置文件或者用nmcli命令操作。这里建议学习阶段先别纠结静态IP等真需要固定地址时再改也行。6.4 顺手验证C工具链并给下一篇文章留一个入口到这个位置你的CentOS或Ubuntu虚拟机已经是一台名副其实的Linux开发机器了。顺手验证一下echo int main(){return 0;} | g -x c - -o /tmp/test /tmp/test echo compile ok能看到compile ok说明从系统内核到编译器这条链路完全畅通。下一篇文章我会在这两台系统里面分别配好完整的C开发工具链GCC参数精讲、GDB调试器、Makefile和CMake工程管理再装好VS Code的远程开发插件让你在Windows的VS Code里直接写虚拟机里的Linux代码。到时候你会发现虚拟机里的Linux用起来和隔壁一台独立开发机几乎没有区别。我在过去这几年里帮不同基础的入门者配过很多套开发环境踩过的坑比大多数人听过的都多。最后提醒三个最容易让新人翻车的地方第一创建虚拟机时内存不要少于4GB否则编译器会以难以理解的方式报错第二磁盘空间宁大勿小你后面学的OpenCV、TensorFlow、Boost这些库每一个都愿意理直气壮地吃好几GB第三装完系统趁早拍快照这个动作三分钟顶得上日后重新配环境的三小时。虚拟机这个东西熟练之后你会觉得它平淡无奇但回头看它给C入门者提供的是一个怎么折腾都不怕试错的安全区。把所有奇怪的编译错误、库依赖冲突、环境变量混乱都留在虚拟机里解决你会学得更踏实。