在Ubuntu中编译C++代码(从安装虚拟机到完成编译)

目录

一、安装虚拟机

(1)官网下载

(2)虚拟机安装

二、创建虚拟机

(1)下载镜像文件(.iso)。

(2)创建虚拟机

三、设置虚拟机

(1)调整字体大小

(2)ubuntu汉化

(3)root初始化

(4)下载vim

四、编译C++文件

(1)创建共享文件夹

(2)编译C++文件

1、下载cmake

2、采用touch命令新建文件

3、采用gedit打开CMakeLists和helloworld文件

4、创建一个工作空间,进行编译

五、附录(一些有用的linux命令)


一、安装虚拟机

虚拟机VMware是一个“虚拟PC”软件,可以在一台机器上同时运行两个或更多系统。

(1)官网下载

官网下载

打开官网,选择合适的版本,我们这里选择Windows版

(建议在下载时在D盘创建一个文件夹专门来放Vmware)

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第1张图片

(2)虚拟机安装

点击刚刚下载好的exe文件,如果有防火墙提醒,选择运行即可:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第2张图片

点击下一步:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第3张图片

选择“我接受”,并点击“下一步”:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第4张图片

选择安装的位置,不建议装在C盘;默认勾选第二个;点击下一步:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第5张图片

这里的用户体验设置可选可不选,我没有选:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第6张图片

选择快捷方式,这里可以都勾选,更加方便:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第7张图片

点击安装,等待安装完成:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第8张图片

点击完成即可:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第9张图片

二、创建虚拟机

(1)下载镜像文件(.iso)。

       虚拟机下载好之后只是提供了一个平台,或者理解为容器。此时就像一台电脑已经拥有了硬盘和内存,但是还没有操作系统。所以我们需要下载程序光盘映像文件。

       Ubuntu是著名的Linux发行版之一,也是目前最多用户的Linux版本。我们就选择下载Ubuntu。但是由于服务器在国外,所以去官网下ubuntu系统会非常慢。我们可以在国内的一些镜像网站下载:

1、清华大学开源网站镜像站

清华大学开源网址

2、在顶部的搜索栏输入ubuntu ,并选择ubuntu-releases:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第10张图片

(3)、选择一个ubuntu版本进行下载。由于新的ubuntu版本多多少少会出现以前从未出现的bug,为了后期的方便使用,出了问题我们可以找到解决方案。保险起见,建议下载18.04:

(补充:我后面还是升级到了20.04,建议大家这里直接安装20.04,避免后续升级再花费时间。当然有内存的可以都装。下载20.04和下载18.04版本一样,这里大家勾选 “20.04/”)

                           在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第11张图片

(4)、选择.iso文件,等待下载:

             在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第12张图片

(文件有点大,可以复制下载链接至迅雷,存放的地方可以在刚刚VMware文件下新建一个ubuntu文件夹)

(下面的操作18版本和20版本都是一样的,只是自定义命名不同而已,大家命名的时候注意下就ok了)

(2)创建虚拟机

1、点击桌面上的VMWare,需要你输入密钥许可证,或者体验30天,大家可以到百度上找解决方案,这里不方便展开。

输入密钥许可证之后,进入欢迎界面:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第13张图片

2、点击创建新的虚拟机

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第14张图片

3、选择“典型”和“自定义”都行,我们这里选择第一个,点击下一步:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第15张图片

4、点击“浏览”,选择刚刚我们下载好的iso文件:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第16张图片

5、接下来就是一些个性化信息的填写,密码需记住,这个密码就是你每次登录ubuntu需要输入的密码:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第17张图片

6、自定义虚拟机名称和位置:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第18张图片

7、最大磁盘默认20G,不是一下子占用20G,可以保持默认

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第19张图片

8、点击完成,虚拟机创建完成。

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第20张图片

(7)等待下载完成之后,输入之前的用户名和密码

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第21张图片

 在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第22张图片

(不知道为什么我在这里用数字键盘输入的时候没有反应,如果大家也一样换成键盘顶部的数字键输入就可以了。)

登录成功之后,ubuntu就终于可以用啦!

三、设置虚拟机

(1)调整字体大小

虚拟机字体太小了,看着很累眼,可以参照下面的方法调整字体大小:

1、右键打开终端、输入命令更新软件源:

sudo apt-get update  

2、安装gnome-tweaks桌面配置工具

sudo apt install gnome-tweaks

3、弹出优化窗口

gnome-tweaks

4、窗口打开之后,点击Fonts,调整适合自己的数字:

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第23张图片

(2)ubuntu汉化

刚开始对虚拟机不熟可以选择对虚拟机汉化,熟悉了之后可以再换回英文。

参考链接

(3)root初始化
sudo passwd root

初始化成功后续有需要时我们才能切换到超级用户。

(4)下载vim

vim是linux中一个高度可配置的文本编辑器。以后的虚拟机的使用中可能会经常使用。

sudo apt-get install vim-gtk

四、编译C++文件

(1)创建共享文件夹

       由于Ubuntu系统安装在 VMware 虚拟机中的,两者之间经常要互传文件。 所以需要共享文件夹,所谓共享文件夹,就是虚拟机可主机都可以访问的一个文件夹, 该文件夹下的文件虚拟机和主机都可以操作。 相当于文件交互的一个桥梁。

1、创建共享文件夹

在自己电脑上建立一个共享文件夹,命名为share,可以创建在之前的VMware文件夹里。在share文件夹可以放入一些文件便于后面检查共享文件夹是否创建成功。

2、关闭虚拟机,在顶部打开虚拟机设置

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第24张图片

3、开启虚拟机,打开终端,使用以下命令查看是否有文件夹:

cd /mnt/hgfs/share

4、查看是否切换到了share文件,并用ls查看文件夹下面是否有文件

ls

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第25张图片

如上图所示,则表明共享文件夹创建成功。

后续会遇到虚拟机重启共享文件夹失效的问题,可按以下操作解决:

1、查看当前挂载的共享文件夹

vmware-hgfsclient

2、如果文件夹存在,使用以下命令:

sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o allow_other

3、设置开机自启:

sudo vi /etc/rc.local 

4、进入vi界面后,按'i'进入编辑模式,输入:

#!/bin/sh -e
​
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o allow_other

输入完成后按Esc键进入一般指令模式,输入":"进入命令行模式,最后输入wq保存退出。

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第26张图片

5、给文件执行权限

sudo chmod +x /etc/rc.local

6、重启虚拟机

reboot

参考博文

(2)编译C++文件

       我们先从简单的helloworld开始,采用cmake方法对c++文件编译。

       其实我们也可以用gcc编译器编译c++程序,这个比较适用于只有一个源文件的情况。但如果我们的程序包含多个源文件,如果采用gcc逐个编译,就会变得很麻烦而且工作量很大。因此我们出现了批处理工具:make

       make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。

      而makefile文件我们又从何获取呢,在一些简单的工程,我们可以人工编写,但面对一些复杂的工程时,我们可以借助CMakeLists.txt文件(学名:组态档)去生成makefile。

       当然,CMakeLists.txt文件就需要我们自己编写啦

总结流程:

  1. 编写.cpp文件

  2. 编写CMakeLists.txt文件,CMakeLists.txt文件生成makefile文件

  3. 使用cmake命令把CMakeLists.txt 文件作为起始点在当前目录中生成makefile

  4. 使用make命令调用makefile文件中用户指定的命令来进行编译和链接

  5. ./ :运行相关程序

参考链接

1、下载cmake

a、更新g++

sudo apt-get install g++ 

如果遇到锁住的问题,比如:

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

尝试关闭终端或者输入以下命令:

sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock

b、检查是否有cmake

which cmake

c、如果显示了路径,说明含有cmake,卸载掉

sudo apt-get remove cmake

d、下载cmake

wget https://www.cmake.org/files/v3.10/cmake-3.23.0.tar.gz

e、解压cmake

tar -zxvf cmake-3.23.0.tar.gz

f、进入解压之后的cmake文件夹,进行检查

cd cmake-3.23.0

g、执行安装过程

./bootstrap

出现错误情况1:

Error when bootstrapping CMake: Cannot find appropriate Makefile processor on this system. Please specify one using environment variable MAKE

输入命令:

sudo apt-get install build-essential

出现错误情况2:

CMake Error at Utilities/cmcurl/CMakeLists.txt:454 (message): Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.

输入命令:

apt-get install libssl-dev

参考博文

解决完错误后再次检查:

./bootstrap

h、编译构造

make

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第27张图片

I、安装

sudo make install

J、检查

cmake -version    //检查版本
which cmake       //检查位置

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第28张图片

cmake安装成功!

(补充:这里版本下载的是哪一版就显示的是哪一版,3.10的版本还是太低了,建议大家下载cmake版本高一点的)

参考博文

2、采用touch命令新建文件
touch CMakeLists.txt
touch helloworld.cpp
3、采用gedit打开CMakeLists和helloworld文件

打开CMakeLists.txt文件:

gedit CMakeLists.txt

在CMakeLists文件中输入:

#cmake最低版本号要求
cmake_minimum_required(VERSION 2.8)
#工程名
project(HELLOWORLD)
#包含原程序,即把给定目录下的源程序复制给变量DIR_SRC
#将指定路径下的源文件储存在指定的变量中
#下面这句话,有些博客中写错了,需要注意
aux_source_directory(./ DIR_SRC )
#生成程序
add_executable(HELLOWORLD  ${DIR_SRC})

打开helloworld.cpp:

gedit helloworld.cpp

在helloworld.cpp文件中输入:

#include
int main()
{
    std::cout<<"hello world!"<

这里CMakeLists.txt的名字一点要输入正确,不然后面cmake的时候会报错找不到该文件!

4、创建一个工作空间,进行编译
//创建目录:mkdir 
//切换目录:cd
//cmake .. :使用CMakeLists.txt 文件作为起始点在当前目录中生成makefile
//make : 调用makefile文件中用户指定的命令来进行编译和链接
//  ./HELLOWORD : 运行helloword文件
​
mkdir build 
cd build
cmake ..
make
./HELLOWORD 

在Ubuntu中编译C++代码(从安装虚拟机到完成编译)_第29张图片

终于,在ubuntu文件下运行c++文件成功!

五、附录(一些有用的linux命令)

除了上面提到的linux命令之外,还有许多常用的linux命令,比如:

  1. cd 目录 :切换到指定的目录

  2. cd ~ :切换到当前目录的主目录

  3. cd .. :切换到上一级目录

  4. cd - :切换到上一次目录

  5. rm -rf :向下递归删除目录,且不做提示

  6. tab :有时候文件名太长可以使用tab键补齐

  7. ls  :  查看当前目录内容

你可能感兴趣的:(ubuntu,c++,linux)