想用虚拟机编写并运行HelloWorld,核心流程就四步:装虚拟机软件、装Linux系统、装编译器、写代码执行,全程约30分钟。
动手前先想清楚:虚拟机安装什么系统好
新手问“虚拟机安装什么系统好”时,大多数教程会推荐Ubuntu,理由很直接:Ubuntu自带apt包管理器,装编译器一条命令搞定,不用折腾源和依赖关系,相比之下,CentOS更适合服务器场景,Fedora更新太快,Debian对新手不够友好。
系统版本选LTS长期支持版,比如Ubuntu 22.04 LTS,LTS版本维护周期长达5年,网上搜到的教程大多基于这个版本,遇到问题容易找到对应解决方案,不要装最新的非LTS版本,软件源和驱动兼容性都可能出问题。
虚拟机软件选VMware Workstation Player还是Oracle VirtualBox?行业共识认为VirtualBox更适合入门,原因有三个:
- 完全免费,个人使用无授权顾虑
- 跨平台,Windows、macOS、Linux都能装
- 硬件要求低,2GB内存的旧电脑也能流畅运行
VMware Player虽然功能更强,但注册账号和许可证对新手是额外门槛,VirtualBox在虚拟机安装Ubuntu方面,教程数量最多,踩坑资料最全。
宿主机硬件方面,建议内存不低于8GB,CPU支持虚拟化技术(Intel VT-x或AMD-V),不确定的话,进BIOS查看或直接搜“如何开启CPU虚拟化”,这是虚拟机性能的基础。
虚拟机安装Ubuntu的完整流程
第一步:下载镜像文件
去Ubuntu官网下载iso镜像,选择Desktop版(带图形界面),文件约4.5GB,下载时留意网络状况,国内用户如果下载速度慢,可以选择中科大、清华等开源镜像站,速度和稳定性都有保障。
第二步:在VirtualBox中新建虚拟机
打开VirtualBox,点击“新建”,弹出向导后这样设置:
- 名称:输入ubuntu,类型自动识别为Linux,版本选Ubuntu 64-bit
- 内存大小:分配4096MB(4GB),低于2GB跑图形界面会明显卡顿
- 虚拟硬盘:选择“现在创建虚拟硬盘”,文件类型默认VDI,大小建议30GB,动态分配即可
创建完成后,选中虚拟机点击“设置”,在“系统->处理器”里把核心数调到2个以上,“显示->显存”拉到128MB,这一步能明显提升界面流畅度。
第三步:挂载镜像并开始安装
点击“存储”,选中光驱图标,在光盘下拉菜单中选择刚下载的iso文件,然后启动虚拟机,屏幕出现紫色界面后等待片刻,选择“Install Ubuntu”进入安装向导。
整个安装过程大约10分钟,需要设置用户名、密码和时区,语言选简体中文,键盘布局默认就行,分区不用手动操作,选择“清除整个磁盘并安装Ubuntu”,这是虚拟机专用虚拟硬盘,并非物理机数据。
进入系统后,先处理这两件麻烦事
安装增强工具,解决虚拟机卡顿怎么解决
首次进入Ubuntu桌面,分辨率低、鼠标不流畅、无法与宿主机共享剪切板,这是正常的,打开终端(快捷键Ctrl+Alt+T),依次执行:
sudo apt update sudo apt install -y virtualbox-guest-utils
装完后重启虚拟机,分辨率自动适配窗口大小,宿主机和虚拟机之间可以直接复制粘贴文本,绝大多数虚拟机卡顿问题都源于没装增强工具,装完后整体体验会顺畅很多。
虚拟机网络连接不上怎么办
Ubuntu默认使用NAT网络模式,能正常访问外网但宿主机无法直接访问虚拟机,对于HelloWorld这种本地程序,NAT模式完全够用,如果遇到软件源更新慢,建议先切换国内镜像源,否则后续安装软件会非常煎熬。
切换镜像源的快捷方式:打开“软件和更新”应用,在“Ubuntu软件->下载自”里选择“其他站点”,弹出列表选择清华或简米云镜像,点击“选择服务器”后关闭窗口,系统会提示重新加载软件源。
写HelloWorld前,把环境配到能直接跑
安装GCC编译器:编译代码的执行者
HelloWorld的C语言版本需要用gcc编译,打开终端输入:
sudo apt install -y gcc
等待执行完成后,输入gcc --version验证版本信息,看到类似“gcc version 11.4.0”的输出即表示安装成功,如果在安装过程中出现“Unable to locate package”报错,说明软件源没更新,先执行sudo apt update再重试。
选择顺手的第一款编辑器
新手常纠结用vim还是nano,建议用nano,原因很朴素:
- 操作直观:底部直接显示快捷键,不需要记命令
- 误操作代价低:Ctrl+W保存,Ctrl+X退出
- 预装自带:无需额外安装
vim是进阶工具,模式切换对新手不友好,容易陷入“不知道怎么退出vim”的困境,如果确实想用vim,先运行vimtutor花20分钟学一遍基础操作。
创建专属工作目录
在终端执行:
mkdir ~/projects cd ~/projects
给所有代码文件建一个独立文件夹,后续写复杂程序时能省去很多整理时间。
从零到HelloWorld的完整代码实操
第一步:用nano创建代码文件
在终端输入:
nano hello.c
这会打开一个空白编辑界面,输入以下代码:
#include <stdio.h>
int main() {
printf("Hello, World!n");
return 0;
}
检查每一行是否有拼写错误,初学者最容易漏掉分号和引号,这两处出错会导致编译失败。
第二步:保存并退出
按下Ctrl + O,回车确认文件名,再按Ctrl + X退出编辑器,系统会返回终端界面,此时键入ls查看当前目录文件列表,能看到hello.c说明文件创建成功。
第三步:编译与执行
在终端输入编译命令:
gcc hello.c -o hello
命令执行后没有任何输出就是好消息,再输入运行命令:
./hello
终端会显示Hello, World!,这就是你通过虚拟机写出的第一个可执行程序。
如果编译时出现hello.c:3:5: error: expected ';',说明printf语句末尾少了分号,再用nano打开文件,修正后重新编译即可,这类报错是新手必经之路,关键是明白报错信息指向的代码行号。
虚拟机编写HelloWorld常见问题速查
问:虚拟机里写完代码,Windows宿主机上能看到文件吗?
可以,但默认不可见,安装增强工具后,VirtualBox会在Ubuntu文件管理器中自动挂载一个共享文件夹,路径通常显示为sf_文件夹名,设置方法:虚拟机设置->共享文件夹->添加宿主机物理路径,重启后生效,如果文件放在~/projects目录里,需要在终端执行挂载命令才能从宿主机直接访问。
问:虚拟机代码能直接复制到物理机上跑吗?
C语言属于跨平台编译型语言,代码本身是纯文本,可以复制,但可执行文件不兼容,Windows下需要用Visual Studio或MinGW重新编译成exe才能运行,HelloWorld这段代码没有任何特定平台依赖,复制源码到宿主机后重新编译即可正常输出。
问:为什么我运行./hello提示Permission denied?
这是因为刚编译出的可执行文件没有执行权限,多数情况下是当前用户不是文件所有者,在编译命令后加-o hello没有权限问题,但如果你手动创建过文件或改变了目录所有者,需要执行chmod +x hello赋予执行权限,再运行./hello即可,实际上正确执行gcc命令编译出来的文件自带执行权限,出现这个报错请检查是否手动修改过文件属性。
从下载镜像到看到终端输出,整条路径没有隐藏的坑,虚拟机是学习编程的沙盒环境,这里写坏的代码、编译出错的教训,都是低成本试错的过程,跑通第一个程序后,试着修改printf双引号里的文本改变输出内容,重新编译运行,你会更快理解“源代码->编译->运行”这条基础链路。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/769655.html





