关于安装 NOI Linux
这里请参考 NOI官方公告
下载 NOI Linux 光盘映像文件,之后按照安装说明文档进行安装。
如果将其安装为虚拟机,推荐使用 Vmware。创建虚拟机的过程中您可能会出现一系列问题,您可以根据具体问题自行百度。
系统配置
经过漫长的安装过程,终于到了开机界面。
这里的默认密码为 123456 。
网络
开机之后,如果你可以联网的话当然要先联网。
如果你的 NOI Linux 是虚拟机,并且连不上网,这多半是虚拟机的问题,不是系统的问题。请参照这个尝试修复。
当然,如果对你来说联网有点困难,不联网也是可以进行编程的(真正考试的时候也不会让你联网)。
输入法
NOI Linux 是自带中文输入法的。这非常的友好。
当你想要使用中文时,在输入框下,只需要按 Ctrl + Shift 就可以切换为中文了。
编辑器
1. gedit
NOI Linux 有许多编辑器(不是编译器),经过一番初体验,我觉得 gedit 还是比较阳间的。
打开
下面这张图里放的主要是系统自带的编译器及编辑器还有评测系统。但是这里面的编辑器和编译器用起来实在是令人窒息,全都没有括号补全功能,而且有的编辑界面令人不忍直视。
接下来我要讲的 gedit 不在上图中,打开方式如下:
-
右键桌面,新建空白文档,命名为 work.cpp (必须)。
右键新建的文档,在弹出的框框中如果第一个就是 gedit,那么直接点击。如果不是 gedit,则查找其他应用程序,选择 gedit。
配置
打开 gedit 之后,直接用可能会有点不舒服,你可以按照 /编辑/首选项 来把编辑器改成你想要的风格。
另外,里面有个自动保存的功能,建议小于十分钟保存一次。
注意:这个编辑器也没有括号自动补全的功能,这也就需要选手熟悉没有括号补全的编辑器。
外观展示
2. vim
这个东西非常强大,可以实现括号补全,但是需要自己配置,配置起来比较麻烦。
打开
在 NOI Linux 下,可以使用终端打开 vim 。
- Ctrl + Alt + T 打开终端
- 输入
vim
之后回车
配置
之后,如果你想要继续学下去的话,可以参照大佬们的博客。
https://www.cnblogs.com/heyboom/p/10522059.html
在这里,关于 vim 的详细用法,我就不再讲解。
使用 makefile 编译运行
1. 编写 makefile
NOI Linux 下的编译方法有很多。这里,我只讲一个较为简洁而方便的方法,那就是 makefile 。
我们以桌面为工作区。
工作区就是你写代码,编译的地方。
先在桌面上建一个文件,命名为 makefile
,没有扩展名,将这个文件和 work.cpp
放在同一目录下。
使用 gedit 打开 makefile
,在里面输入以下内容:
名字随便起:work
g++ work.cpp -o work
./work
注意:
- 第一行的
名字随便起
是可以替换的。例如,你可以将它换成qwq
等,甚至它的名字就可以是名字随便起
。 - 第二行和第三行之前是一个 Tab 键,并不是几个空格。你可以将上面上面 Tab 字符复制过去。
保存并关闭文件。
2. 修改终端默认路径
之后,我们需要将打开终端时的默认路径修改为我们的工作区,也就是桌面。操作方法如下:
打开
/Home/
显示隐藏文件
找到文件
.bashrc
并用 gedit 打开。-
在末尾添加
cd /home/noilinux/Desktop/
效果如下图:
保存并关闭文件。
之后,我们可以愉快地编译了!
注意:如果你不想把工作区放在桌面,而是某一个文件夹,这个路径你可以改为你的文件夹地址。
3. 编译
首先确保 work.cpp
没有编译错误,再按 Ctrl + alt + T 打开终端,输入 make
之后回车 。
效果如下:
注意:你的程序输出最后需要额外回车一行,否则你输出之后会造成一些无法描述的情况,看起来特别☹️️。
结尾不回车的样子:
如果说我们编译错误了,终端会返回编译错误的信息。
编译错误的样子:
当然,编译的时候我们只能用 work.cpp
这一个文档。正常考试的时候有多道题。我们可以打完一个题之后,将程序另存为另一个文件。然后把 work.cpp
清空,继续编写下一个题。
总之,我们只能编译 work.cpp
这个程序。而编译过程只需要打开终端,输入一个 make
指令,就可以完成编译了。编译的过程顺便也运行了以下程序。是不是很方便快捷呢?!
4. 编译开关
如果说,我们需要显示所有警告信息;或者题目非常优秀,给我们开 C++11 , 而且给我们开 O2 优化。那么,这些编译开关我们怎么自己开呢?
命令行编译的基本格式:
g++ work.cpp -o work 编译开关
那么,我们只需要在 makefile
里面添加编译开关即可。
比如说要添加
-Wall -Wextra -std=c++11 -Ofast
正确的操作是这样的:
保存文件并退出。
接下来,我们试一下编译开关有没有开上。
我们知道,当我们在程序里定义了一个变量,如果接下来变量没有使用,那么它会发出警告。我们可以利用这个特性来判断我们有没有开上编译开关。
打开终端,输入 make
。
如果你的终端像下图这样,那么你就成功了。
至此,我们就完成了编辑、编译和运行的工作。这样几乎已经满足了考试的需要。
总结
关于 NOI Linux 的使用,我就先探索到这里。
这篇博客仅仅是一个快速入门指南,主要是为了帮助没有用过该系统的选手快速适应环境。
如果你需要 GDB 调试,你可以使用 GUIDE ,当然教程需要上网搜索大佬的博客……
如果你有更好的建议,或者我的表述出现了某些问题,欢迎在下方评论留言。
2021 是充满机遇的一年。期待在这一年里大家学业有成,事业顺利,RP++!
EdisonBa
2021.2.1 初次编辑
NOI Linux 快速入门指南的更多相关文章
-
[转] Spark快速入门指南 – Spark安装与基础使用
[From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...
-
AngularJS快速入门指南20:快速参考
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
-
AngularJS快速入门指南19:示例代码
本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...
-
AngularJS快速入门指南18:Application
是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...
-
AngularJS快速入门指南17:Includes
使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...
-
AngularJS快速入门指南16:Bootstrap
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
-
AngularJS快速入门指南15:API
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
-
AngularJS快速入门指南14:数据验证
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
-
AngularJS快速入门指南13:表单
一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...
随机推荐
-
Hash哈希(二)一致性Hash(C++实现)
一致性Hash 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,经常用于分布式.负载均衡等. 原理 一致哈希是 ...
-
17个提升iOS开发效率的必用工具
时间就是金钱.编码效率的提升意味着更多的收入.可是当我们的开发技巧已经到达一定高度时,如何让开发效率更上一层楼呢?答案就是使用开发工具!在这篇文章中,我会向你介绍一些帮助我们提升编码速度和工作效率的工 ...
-
docker初步
[Note,]由于docker的局限性,docker只能运行在64位的系统中 docker软件应用程序可以重复地运行在任何地方,因为它的容器包含了所有的环境依赖关系! docker有三种方式运行 作为 ...
-
Mysql 分区详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt120 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.m ...
-
libaio.so.1()(64bit) is needed by MySQL-server 问题解决办法
[root@localhost upload]# rpm -ivh MySQL-server-5.5.25a-1.rhel5.x86_64.rpmerror: Failed dependencies: ...
-
sql注入解析
sql注入解析 sql注入解析(一)基本语法 sql注入解析(二)执行注入 sql注入解析(三)数据库类型 sql注入解析(四)避开过滤
-
WebGL编程指南理论分析之物体层次模型(局部运动)
书中340页,开始讲到层次模型(关节模型),也就是整个物体,可以*控制其各部位单独运动,就像关节一样,互不干扰或者有一定关联. 就像图中,左右键控制整个物体(arm1和arm2)的Y轴旋转,上下键控 ...
-
MFC中和定时器使用
在MFC中和定时器相关的有三个函数: 1.设置定时器(定义一个定时器的属性): SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBAC ...
-
c++第二十五天
p129~p131: 1.赋值运算的左侧运算对象必须是一个可修改的左值. 2.赋值运算满足右结合律. 3.赋值运算的结果是它的左侧对象,并且是一个左值. 验证: #include<iostrea ...
-
vim按下ctrl+s僵死
CTRL+S表示停止向终端停止输出 CTRL+Q恢复向终端输出流