操作系统 (OS) 是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。现在常见的操作系统有微软的Windows,苹果的macOS,Linux以及移动操作系统(谷歌的Android和苹果的iOS)。其中,Linux的发行版有很多,如Debian,center,redhat等。
答主本次介绍的Ubuntu也是Linux操作系统流行的发行版之一。主要介绍Ubuntu一下的环境搭建,以及简单程序的编写编译。
作为初学者学习Linux,没有必要将自己的系统(一般是windows)装成不熟悉的Linux系统或者购买真正的服务器设备。一方面增大学习难度,另一方面服务器成本较高(这里说的是硬件服务器,而非云服务器),因此利用虚拟机软件搭建Linux环境就是一个很好的选择。
使用虚拟机系统环境,可以对虚拟系统随意进行任何的设置和更改操作,甚至可以格式化虚拟机系统硬盘,进行重新分区等操作,而且完全不用担心会丢掉有用的数据。因为虚拟机是系统上运行的一个虚拟软件,对虚拟机系统的任何操作都相当于是在操作虚拟机的虚拟机设备和系统,不会影响电脑上的真实数据。
Vmvare的安装在网上的资源很多,答主在这里就不做过多累述,以下给出Vmvare workstation 官网下载地址以及一些注意事项。
Vmvare workstation 官网下载地址
目前很多软件由于版权等问题,需要输入序列号/密钥。网上有很多绿色破解版,可以自己找绿色破解版下载就OK。(补充:如果是为了学习知识为目的使用盗版软件是不违法的,个人非商业目的使用不违法。)
使用虚拟机安装操作系统一般都会选择ISO文件,因此首先我们需要下载操作系统对应ISO版本的文件。
Ubuntu镜像文件的下载要根据自己的PC机系统版本进行选择,一般情况下大家电脑系统版本都是64位,下载64位版就没有问题。
大家下载Ubuntu的时候会发现共有两个版本:
①一个版本是server(服务器版);
②另一个版本是desk(桌面版)。
从镜像名称区别Ubuntu版本,大家根据自己需要下载对应的版本:
ubuntu-18.04.5-desktop-amd64.iso ——桌面版
ubuntu-18.04.5-live-server-amd64.iso ——服务器版
(下面给出Ubuntu镜像文件下载的入口)
Ubuntu官网下载入口
Ubuntu历史版本下载入口
Ubuntu18.04安装晚上资源相当多,在这里就不做说明,下面为一位博主写的文章,大家可以转到此处去学习。
Vmvare下安装Ubuntu18.04 桌面版
Vmvare
答主安装的是Ubuntu server(服务器版本),因此下面是有关服务器版的的配置与链接,当然“更换源”的内容是类似的。
1)虚拟机“快照”定义
磁盘快照是虚拟机磁盘文件(VMDK)在某个点及时的副本。在系统崩溃或系统异常,用户可以通过使用恢复到快照来保持磁盘文件系统和系统存储。
2)为什么使用虚拟机快照
3)创建虚拟机“快照”
sudu apt updata/sudo apt full-upgrade
答主这边sudu apt updata
无法运行,后面的代码块sudo apt full-upgrade
能够正常更新。如果大家碰到类似问题可以输入后一个代码块解决问题。
1)为什么需要更换源
由于某些原因,当我们用官网的源的更新和下载包的时候,速度慢、很费时间。所以,将其更换换成国内的源。
2)更换源的步骤
第一步,备份之前的源;
打开终端,输入命令进行备份;
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
输入以下命令,检查是否备份成功;
1.cd /etc/apt/
2.ll
实际运行图如下:
第二步,进入ssh更换源;
答主是在外部ssh上进行更换源的操作。下面介绍一下ssh的登陆方法。
首先在Ubuntu上获取IP地址,输入命令ifconfig
回车,就会看到IP地址。
之后,打开windows
自带的Windows Powershell
,输入ssh 用户名@IP地址
。第一次登录会提示
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入yes,回车即可。
最后,输入密码后进入ssh
第三步,进入ssh后,删除源内容;
使用vim
编辑器编辑软件源,输入命令vim /etc/apt/sources.list
,在底线命令模式输入dd
删除全部内容;或者用nano
,输入命令nano /etc/apt/sources.list
,进入编辑器后使用 Ctrl+K
删除全部内容。
第四步,更换源内容;
源文件内容删除后,将镜像文件粘贴进去。由于答主使用的是ssh,因此只需点击鼠标右键,即可粘贴。在这里给出清华源与阿里云源,大家二选一。
阿里云镜像源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
清华镜像源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-proposed main restricted universe multiverse
第五步,修改完软件源后,更新软件列表和软件;
sudo apt update #更新软件列表
sudo apt upgrade #更新软件
vi或vim是Linux最基本的文本编辑工具,基本上分为三种模式分别:
1.命令模式
2.输入模式
3.底线命令模式、
命令 | 作用 |
---|---|
i | 切换到输入模式,以输入字符 |
x | 删除当前光标所在处的字符 |
: | 切换到底线命令模式,以在最底一行输入命令 |
U | 撤销对当前行上做的所有修改 |
dd | 删除光标所在一整行数据,且临时存储到缓存区 |
:wq | 保存文件且退出 vim 编辑器 |
:q! | 强制退出 |
GCC 仅仅是一个编译器,没有界面,必须在命令行模式下使用。通过gcc命令就可以将源文件编译成可执行文件。
最简单的生成可执行文件的写法为:
$ cd dirname #进入源文件所在的目录
$ gcc filename.c #在 gcc 命令后面紧跟源文件名
打开 源目录,会看到多了一个名为 a.out 的文件,这就是最终生成的可执行文件。这样就一次性完成了编译和链接的全部过程,非常方便。
注意:不像 Windows,Linux 不以文件后缀来区分可执行文件,Linux下的可执行文件后缀理论上可以是任意的,这里的.out只是用来表明它是 GCC 的输出文件。不管源文件的名字是什么,GCC生成的可执行文件的默认名字始终是a.out。
如果不想使用默认的文件名,那么可以通过-o选项来自定义文件名,例如:
$ gcc helloworld.c -o HW.out
这样生成的可执行程序的名字就是HW.out
1. 切换到家目录下,建立demo文件夹;
$ cd home #进入/home目录
$ mkdir demo #在/home目录下创建文件夹demo
此步骤可以省略。答主创建该文件夹,是为了后续方面管理。如果不创建demo文件夹,在当前目录下直接编写程序也是可以的。
2. 在当前目录下,输入命令vim helloworld.c
。采用文本编辑器vim,创建helloworld.c 文件;
3. 进入vim编辑器后按照c的语法编写程序即可,在之前已经介绍了vim的简单用法,在这里不做重复说明;
4. 生成可执行程序。命令行输入gcc helloworld.c
,
会发现在之前创建的demo文件夹中出现可执行文件类型a.out
5. 在命令行输入./a.out
,运行可执行文件如下所示:
>注意 ./
表示当前目录,整条命令的意思是运行当前目录下的 a.out
程序
总结: 为了读者方便阅读理解,将完整的演示一下从编辑源文件到运行可执行程序的全过程:
$ cd demo #进入源文件所在目录(可省略)
$ vim helloworld.c #新建并编辑源文件
$ gcc helloworld.c #生成可执行程序
$ ./a.out #运行可执行程序
hello,world!
$ #继续等待输入其它命令
问题重述:
编写一个主程序文件 main1.c 和一个子程序文件 sub1.c。
要求: 程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。
在命令行输入vim main1.c
。主程序已经用vim
写好,以下为主程序内容:
在命令行输入vim sub1.h
,回车进入文本编辑器中,按照正常c语言编写即可,子程序sub1.h
如下所示:
#ifndef _SUB1_H
#define_SUB1_H
#include
float x2x(int a,int b)
#endif
在命令行输入vim sub1.c
,回车进入文本编辑器中,按照正常c语言编写即可,子程序sub1.c
如下所示:
在命令行输入`gcc main1.c sub1.c -o main1。采用多个文件一起编译,输出放到main1中。
在命令行输入`./main1(filename),输出运算结果。
对于windows系统下程序的的编译,大家是比较熟悉的,可以用Dec-cpp,也可以使用vs,或者其他的一些编译工具。在这里答主直接会给出运行结果:
问题重述:
在第三章节问题基础上,使用Makefile方式进行编译。
Makefile是一个工程文件的编译规则,描述了整个工程的编译和链接等规则,其中包含了哪些文件需要编译,哪些文件不需要编译,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重建等等。
makefile带来的好处就是——“自动化编译”。一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
目标文件:[相依文件]
命令[注释]
命令[注释]
…………
规则名词 | 规则解释 |
---|---|
目标 | 需要生成的目标文件 |
依赖 | 生成该目标所需的一些文件 |
规则 | 由依赖文件生成目标文件的手段 |
Tab | 每条规则必须以tab开头,使用空格不行 |
Make file简单介绍,大家感兴趣的可以点开学习。
1)检查是否有“make”源码包。输入sudo apt install make
进行安装。
2)创建Make file文件,输入命令vim makefile
:
newmain:main1.o sub1.o
gcc main1.o sub1.o -o newmain
main1.o:main1.c
gcc -c main1.c
sub1.o:sub1.c
gcc -c sub1.c
clean:
rm prog *.o #删除编译产生的中间文件
3)调用make并运行。输入make
回车;再输入./newmain
这时,只需要一条make命令完成了编译。