0.前言
为实现 CSAPP 配套C++练习题,在虚拟机上配置c++环境
1.准备一个Linux系统
1.1 下载Linux发行版镜像
选择最常见的Linux发行版Ubuntu,其在官网上可下载,我选择的版本号是 20.04.2,官网链接如下:https://ubuntu.com/download/desktop
1.2 选择虚拟机软件
个人经历有限,听说过的虚拟机软件只有两种:VMware 和 VirtualBox。本次首先使用VMware后安装系统过慢,安装后使用卡顿严重。试用VirtualBox后几小时便完成了安装系统的流程,使用体验很好,在此推荐用VirtualBox,建议在清华镜像站上下载,直接点击“点击下载Windows最新版即可”,无需在该网页上进行其他操作。
1.3 在虚拟机上安装Ubuntu
按照此教程即可,没什么坑
https://blog.csdn.net/scene_2015/article/details/83025750
成功启动Ubuntu
1.4 提升使用体验
【设置Ubuntu显示范围随virtualbox窗口变化而变化】
下述方法在我的电脑上并没有解决上述问题,尝试更换分辨率后稍微有所缓解,但是还是无法做到自适应调节Utbuntu显示范围,因此此节请酌情观看没有其他相关操作后,现在已经可以随着窗口大小调整Linux显示样式了可能需要重启的缘故
到目前为止已经可以顺利使用虚拟机里的linux,但是我们发现当我们调整Virtual窗口大小的时候,所显示的ubuntu范围不会变化,两侧的滚动条仍然存在,多出来的部分会显示白边
这里的处理方法也简单,在VirtualBox上方菜单栏选择:设备-安装增强功能。
之后会在Ubuntu中弹出安装窗口,点击run后进入终端,按照提示操作即可。
记得重启生效
参考:https://jingyan.baidu.com/article/1e5468f900266e484961b7cb.html
若操作时出现“未能加载虚拟光盘”,大多数情况是你已经加载了相关内容,表现为左侧出现一个光盘图标,如果想重新安装增强功能则右键该光盘选择“弹出”即可。
【设置Ubuntu与主机共享文件夹及剪切板拖放共享】
共享剪切板:设备-共享剪切板-双向
共享拖放内容:设备-拖放-双向
共享文件夹:请参照https://jingyan.baidu.com/article/fec7a1e5c16e191190b4e73f.html。这里大致分为两步:设置VirtualBox软件(勾选固定分配、自动挂载);在Linux内设置文件映射
【解决右键只有创建文件夹而没有创建文件按钮的问题】
https://blog.csdn.net/qq_39694792/article/details/108083189
【很全的Linux常见工具使用方法:终端、vi、gcc常见命令】
https://blog.csdn.net/weixin_35477207/article/details/78165411
2.在Linux上配置C++环境
2.1 整体认知
如果你之前一直在win上运行代码,那么可能认为所谓环境是一个应用软件再加上在软件中的一些配置。
但实际上要让代码运行起来的环境,直观来讲能使代码正常运行即可(更进一步的话可能会要求支持调试)。
这里的环境我们需要三个组件:
- 编译代码的工具:gcc(for c语言)/g++(for c++)
- 更方便的用于编辑代码的工具:vim
- 用于调试代码的工具:gdb
2.2 安装gcc/g++
安装之前查看是否有安装,使用命令:
gcc --version
g++ --version
如果没有安装使用如下命令进行安装:
sudo apt-get install gcc
sudo apt-get install g++
补充:
编译时出现如下错误
/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h
错误信息提示缺少了一些库文件,使用如下命令安装即可
sudo apt-get install gcc-multilib
2.3
到现在为止应该可以对c/c++文件进行编译运行了,我们来试验一下:
以cd指令跳转到(/表示跳转的目标是根目录),以ls指令查看当前路径下文件:
以cd跳转到个人目录(个人目录在home下):
以mkdir创建code文件夹用以存放代码:
跳转到code文件夹后,以touch创建.c文件:
注:这里我把原来的.c删了重新创了个同名的cpp,如果你还是用.c的话,在编译的时候使用g++而非gcc命令即可
使用vim编辑hello文件(vim的使用比较麻烦需要另找教程,编辑过程在下图没有呈现,需要你自己打字),使用cat查看编辑后的hello文件
以g++编译cpp文件并以-o指定编译后文件名为“hello”
以ls查看当前目录是否有编译后文件hello,执行该文件