在Windows 10下搭建Ubuntu Linux+GCC开发平台

学习C语言,最理想、高效的平台应当是Ubuntu Linux+GCC;然而,我们日常使用最多的还是Windows 10。在2016年秋季之前,搭建这一开发平台需要用到虚拟机、共享文件夹等技术,并且需要时常在Windows 10与Ubuntu虚拟机之间来回切换——这不仅增加难度而使不少初学者望而生畏,而且一些处理器性能不高或磁盘空间不充足的电脑无法满足虚拟机运行的需求。由于这些令人头痛的原因,老师只好推荐使用Dev-C++学习,因为它同样使用GCC编译器。然而GCC编译器的Windows版本存在着许多大大小小的bug,这严重影响学习质量。不过,2016年8月2日,Windows 10周年更新版正式开放下载、升级,其中包含的Linux子系统成了最大的亮点。如果使用这个子系统学习,那么不仅仅能大幅提升学习效率,而且前面提到的关于虚拟机的各种难题全部迎刃而解。
开启Linux子系统并搭建Ubuntu+GCC开发平台并不是一件复杂的事情。请按照以下步骤一一进行,就会发现这一行动非常值得。


第一步:启用Linux子系统功能

在开始按钮上长按或右键单击,即可弹出快捷菜单。在菜单中选择“WindowsPowerShell (管理员)”或“命令提示符 (管理员)”,并在弹出的“用户帐户控制”窗口中点击或单击“是”。
Wiin+X菜单样式
接着在弹出的窗口中输入

dism /online /enable-feature /featurename:microsoft-windows-subsystem-linux

并回车。执行完毕后,重新启动计算机(直接按Y即可重新启动)。
启用子系统功能


第二步:启用开发人员模式

在“开始”菜单中,打开“设置”,然后依次进入“更新和安全”->“针对开发人员”,然后选中“开发人员模式”单选按钮,在弹出的窗口中点击或单击“是”,即可启用。
接下来会提示“正在搜索开发人员模式程序包”,不要理会它。不管有没有这个程序包,都不影响我们对C语言的学习。
关于弹出窗口中关于安全风险的说明:我们学习C语言编程中并不会带来任何安全风险,所有的安全风险都是各种作死操作导致的。就像之前你家里一直不通天然气没法做饭只能订外卖,但是近期家中突然接通了天然气就可以在家里自己做饭了一样,不能因为害怕天然气爆炸就拒绝通天然气。事实上天然气爆炸都是作死导致的,比如开着天然气抽烟。从来没有人因为天然气爆炸就说天然气不好,更没有人见到天然气爆炸就把安装工批判一番。
启用开发人员模式


第三步:下载Linux子系统(此步涉及到过程中最最最大的难点——耐性)

首先链接到互联网。打开Windows PowerShell(这里不需要管理员权限,所以在菜单中选择不带“管理员”字样的那一项即可),输入

lxrun /install /y

回车即可开始下载。下载过程视网速快慢可能需要20~40分钟不等,而且不一定一次成功,需要各位做好心理准备。顺便吐槽一下,这服务器好像是从收破烂大爷那捡来的,老是不稳定,时快时慢;有时候能下载,有时候不能下载。不过显而易见的是,2017年这服务器的稳定性还是大幅提升了,不过仍然不是很理想。所以如果下载不到,请不要灰心,更不要放弃,换个时间段再下载一遍说不定就下载到了呢。如果一遍下载失败可以再试一遍,要是连续两遍都失败了那就是辣鸡服务器的锅了,果断换个时间段吧。
下载子系统
下载成功后,会全自动安装。一切就绪后,会提示“安装成功”。笔者在写作本文时(2017年6月1日晚上)现场安装了一遍,一次成功,从开始下载到安装成功耗时共27分钟。
安装成功


第四步:进入子系统

很简单,安装成功后,打开PowerShell,键入bash并回车,即可进入Linux子系统。使用lsb_release -a命令(注意!Linux命令是区分大小写的)可以看到Linux子系统在Windows 10创意者更新中已经更新到了16.04 版本(周年更新中则是14.04)。
周年更新中,子系统对中文的显示有严重bug,这一问题在创意者更新中基本修复,但是当中文字串过长或夹杂着各种符号时仍然可能有一点bug。所以2017年国庆节(届时推出的秋季创意者更新有望彻底解决这一bug)之前应当避免在Linux子系统中处理大量中文。
子系统版本号与Windows 10创意者更新版本号


第五步:下载安装GCC

子系统中,GCC编译工具链默认并未安装。不妨输入下面命令

gcc --version

即可看到如下提示
GCC尚未安装
可以看到系统已经给出了GCC的安装方法——使用apt命令。
首先保证互联网连接通畅(apt命令所需),然后输入以下命令

apt install gcc

然后gcc就可以全自动下载并安装了。下载安装过程中如有提示,一律Y即可。

GCC准备开始安装

幸运的是,因为我们只是初学C语言,所以不必追究GCC的版本——如果需要安装特定版本的GCC,那么apt命令可就不管用了,Linux下手动安装软件可不是一件容易的事情!
GCC安装成功


第六步:在Windows中下载安装Notepad++

Notepad++是一款体积小巧、功能强大的纯文本编辑器,可以代替系统的记事本。因为Notepad++拥有许多特色功能,如代码编辑模式、各种文本编码一键互转等,而这些功能是在Linux子系统中学习C语言编程所常用的。
访问notepad-plus-plus.org即可下载。下载时请注意选择“64-bit x64”(64位版本)。因为,32位版本的Windows 10可是没有Linux子系统的哦~64位系统下载安装软件的原则就是“能用64位就不用32位”。
Windows下的软件安装过程很简单,相信大家都会,这里就不再赘述了。


第七步:开始编写C语言程序!

首先在开始按钮右键菜单中打开一个Powershell窗口(非管理员的),并键入cd Desktop切换到桌面,然后键入bash,回车,进入子系
开始编写!打开PowerShell

然后在Notepad++中新建一个C语言源文件,按照下图中的方式,将“语言”设置为C(这样就能以C语言的形式高亮代码、配合缩进了)。

Notepad++中设置为C语言

然后,再将编码转为UTF-8无BOM,因为我们的Linux子系统对这种编码方式兼容得最好。(注意,用系统自带的记事本可以正常打开UTF-8无BOM编码的文本文件,但是如果用自带的记事本保存一遍,就自动加上BOM了,所以不要用系统自带的记事本处理代码)
Notepad++中转编码

另存到桌面上,默认文件名为new 1.c:
另存到桌面

然后,在PowerShell窗口中刚刚进入的子系统里,输入

gcc new\ 1.c

或者

gcc "new 1.c"

即可一步到位得到可执行文件a.out(如果a.out已经存在,将被覆盖)
说明(如果看不懂可以忽略,不懂也不会影响学习的,千万不要因为看不懂而失去信心)
Windows的命令行下,对于有空格的路径(文件名、目录名)要求必须用双引号包围起来;Linux和macOS除了双引号包围外,多了一种选择:反斜杠。把路径(文件名、目录名)中的每个空格改写成“反斜杠+空格”的形式,如new 1.c要写成new\ 1.c。
Windows中的目录层次以反斜杠间隔,而Linux则使用正斜杠间隔(所以反斜杠可以用于“转义”空格)。
Linux和macOS下没有“C盘”“D盘”这样的概念,它有且只有一个根目录/,这也是系统卷的挂载点;其他卷可以挂载在任意一个空白的子目录上。Windows则可为每个卷分配一个驱动器号,这样就形成了“C盘”“D盘”等等;也可以像Linux一样将卷挂载在一个空白的子目录上(卷太多了,26个英文字母显然就不够用了),但是这要求该子目录所在的卷必须是NTFS文件系统。

编译得到a.out

然后执行a.out,即可看到运行结果:
得到运行结果

可能有人要问了,为什么执行需要输入

./a.out

而不像Windows这样直接输入a.out?
因为执行一个程序时,如果只给出程序的文件名而不给出路径,那么Windows和Linux的反应会有所差别——Windows会首先搜寻当前目录,如果没找到则搜索系统目录;Linux则只搜寻系统目录,决不会搜寻当前目录(如果当前目录不是系统目录的话)。显然a.out存放的路径不是系统目录,所以必须给出路径才能执行。.(一个点)代表当前目录。所以

./a.out

就给出了具体的路径,Linux系统也就能一步到位找着文件了。
相似地,..(两个点)代表上一层目录,-(连字号)代表前一个目录。如何理解?不妨类比下楼: 从9层下到了1层,那么现在处于1层的你会这么想:你的“上一层”是2楼,而“前一层”则是9楼——2楼在1楼之上,与1楼只隔了一层楼板;从9楼直接下到了1楼,途中没有在别的楼层逗留。
在Windows下,.和..同样可用,而-则不可用。如果要实现-的效果,请使用pushd和popd,而不是cd。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页