本文主要叙述了Ubuntu在Windows10环境下的安装,Linux系统下编写C语言程序、运行C语言程序,及Makefile文件编写规则。
目录
文章目录
- Ubuntu的安装
- 1.Linux简介
- 2.虚拟机的安装
- 2.1 虚拟机的选择
- 2.2 VMware Workstation pro安装常见问题
- 2.3 Ubuntu 的安装
- Ubuntu系统下编写C语言程序
- 1.C语言环境的安装
- 2.编写HelloWorld程序
- Makefile的应用
- 1.Makefile简介
- 2.实例
Ubuntu的安装
1.Linux简介
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise、SUSE、Oracle Linux等。[1]
其中,Linux服务器就是采用Linux系统的网络服务器,具有很多优点,被广泛用于web服务器、文件服务器、邮件服务器、域名解析服务器、防火墙等相关设备上。
在学习Linux操作系统时,常用的Linux操作系统发行版本有Ubuntu、CentOs等。
2.虚拟机的安装
2.1 虚拟机的选择
笔者在Windows 10 Home系统环境下,选择安装的虚拟机为VMware Workstation pro版本为16.0,如图。
具体安装过程比较简单,具体可以参考CSDN上的其他博客。
2.2 VMware Workstation pro安装常见问题
安装虚拟机之前,首先需要启用Windows的部分功能。
step1:打开控制面板,查看方式选择 类别 。
step2:点击 程序 。
step4:点击 启用或关闭Windows功能 。
step5:选择 虚拟机平台 ,点击确定。
部分用户可能出现蓝屏问题。首先记住蓝屏时Windows的错误代码,然后在网站上搜索相关资料。比如可能的问题是Windows中Hyper-v功能与VMware Workstation pro软件不兼容,其解决方法是在 Windows 功能 中关闭 Hyper-v 功能。
2.3 Ubuntu 的安装
笔者选择的Ubuntu版本是ubuntu-18.04.5-desktop-amd64,建议选择国内的镜像网站下载镜像文件。
Ubuntu官网的网址如下:
https://ubuntu.com/download/desktop
网易的下载地址:
http://mirrors.163.com/ubuntu-releases/
中科大下载地址:
http://mirrors.ustc.edu.cn/ubuntu-releases/
阿里云下载地址:
http://mirrors.aliyun.com/ubuntu-releases/
国内镜像网站比较大,读者可以自寻合适的网站下载镜像文件。在镜像网站上,首先选择Ubuntu的版本。
比如安装Ubuntu 18版本,我们点击Ubuntu 18.04/。
我们下载iso为文件结尾名的文件,其中含有desktop的文件是桌面版,含有server的文件是服务器版。桌面版和我们熟悉的Windows操作系统类似,有着可视化界面可以操作,服务器版类似于终端界面,读者可以根据自己的需求来选择合适的系统的版本。
接下来是在VMware Workstation pro中安装Ubuntu系统。打开VMWare Workstation pro软件后,我们点击 创建新的虚拟机 。
进入新虚拟机向导,可以选择典型或者自定义。新手推荐典型配置,安装过程会比较简单一点。
具体安装过程请读者在网上自寻搜索并安装。配置好Ubuntu系统后我们就可以进入C语言的环境配置了。
Ubuntu系统下编写C语言程序
1.C语言环境的安装
首先检查网络连接是否正常。可以将Ubuntu系统的镜像源修改为国内的地址,在安装一些软件时下载速度会相对快一点。在Ubuntu中打开终端(快捷键 Ctrl+Alt+T),输入 ifconfig,如果提示错误,需要下载net-tools的包来执行这个指令。(此步可以跳过,可以选择直接安装gcc)。
sudo apt install net-tools
安装好后,输入ifconfig检查网络配置。接下来开始配置C语言环境,输入以下指令安装gcc。
sudo apt install gcc
安装完成后,可以输入以下代码检查gcc是否正常安装。
gcc
此时终端会提示没有输入文件,说明gcc已经成功安装了。
2.编写HelloWorld程序
Ubuntu上常用的文本编辑器有vi\vim、gedit、nano等,下面主要以nano来介绍我们如何编写Ubuntu上第一个C语言程序。首先,我们输入以下代码。
nano HelloWorld.c
这句代码中nano是使用nano编辑器来创建\打开HelloWorld.c文件。在Linux系统中查询到,nano的用法如下。
nano [options] [[+line[,column]] file]...
我们编写以下的程序。
#include<stdio.h>
int main()
{
printf("Hello,world!");
}
我们按下Ctrl+X离开编辑器,输入Y\y保存文件,并命名为HelloWorld.c。编写好程序后,我们使用gcc编译我们的代码,输入以下代码。
gcc HelloWorld.c
默认情况下,gcc会将编译过后的文件命名为a.out,当然我们也可以使用下面的代码将编译的文件命名为其他名字。
gcc [file] -o [name]
我们可以在终端输入ls 来查看当前目录下的所有文件。在终端输入ls 命令后,我们可以看到gcc编译过后的文件,且文件的颜色为绿色,说明这个一个可执行程序。在终端输入以下命令来执行它。
./a.out
其中./表示的是当前文件夹,Linux系统首先需要找到这个文件的位置才能执行它,a.out是刚刚gcc编译的文件。
Makefile的应用
1.Makefile简介
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。[2]
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。[3]
以上参考了相关网站,详情请打开原网站。
所以我们需要使用makefile来编译大型程序文件。
2.实例
下面编写了一个主程序文件 main1.c 和一个子程序文件 sub1.c,其中子程序sub1.c 包含一个算术运算函数float x2x(x1,x2),此函数功能为对两个输入整型参数做相乘,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。下面分别是sub1.c和main1.c的代码。
sub1.c
float x2x(int x1,int x2)
{
return (float)(x1*x2);
}
main1.c
#include<stdio.h>
#include "sub1.c"
int main()
{
int x1,x2;
scanf("%d %d",&x1,&x2);
printf("%f",x2x(x1,x2));
return 0;
}
在Ubuntu系统中执行。
比如我们输入3和7,中间用空格隔开,得到结果21.000000。
在Windows环境下运行此程序非常容易,笔者使用的编译器时Visual Studio Code(以下简称VS Code)。编写完sub1.c和main1.c文件后,将其保存在同一目录下,点击运行,运行结果如下。
接下来使用编辑makefile文件,然后使用make命令生成可执行文件。首先在同一目录下创建makefile文件,然后写入以下代码。
target:main1.o sub1.o
gcc -o target main1.o sub1.o
main1.o:main1.c
gcc -c main1.c
sub1.o:sub1.c
gcc -c sub1.c
clean:
rm *.o
如果出现函数x2x多次定义的问题,笔者目前找到最简单的方法是在sub1.c的函数前面加上inline前缀。或者可以将sub1.c文件重新命名为sub1.h,然后将makefile文件中sub1.c修改为sub1.h。在终端输入make后,就会生成可执行文件。
终端此时会执行我们makefile文件中的语句,此时我们会得到名为target可执行文件,输入以下语句执行。
./target
此时我们就成功的使用了makefile来编译程序了。
"> 最后一次编辑为2021年9月14日