NOI Linux 2.0 使用指南 Code Blocks 手把手教会你

安装

NOI Linux 2.0 的镜像可以从 NOI 官网下载。(NOI Linux 2.0发布,将于9月1日起正式启用!)

可以采用 Virtual Box 或者 VMWare 来安装虚拟机(不建议安装实体机,如果想要尝试 Linux 环境,推荐使用 WSL 2.0,亦或用实体机安装 Ubuntu 发行版)。

编辑器

NOI Linux 提供了很多编辑器(没有 Dev C++  考试的时候也没网)。

建议使用Code::Blocks。下面详细介绍各个编辑器的利弊。

VS Code

作为编辑器的神,具有轻量级的优点。但是,因为系统自带的版本没有 C++ 插件,断网状态无法自行安装,考试时放弃,日常可以安装插件做练习。

Sublime Text

一样只有高亮不能补全。一个小亮点是配置 Task 的操作还算简单,然而并不推荐。

Vim

一个纯命令行的编辑器,以学习曲线陡峭而闻名,配置也较复杂,并不推荐使用。

当然,为了你 ssh 上服务器能改两行字,建议学习一下最基本的操作(i, esc, :wq, :q!)。也是很多大神编程的必备,装神可以学学。

Geany

一个轻量级 IDE。有部分补全,但是还是不够好用。

Code::Blocks(重点)

这是 NOI Linux 下最好用的一个编辑器。下文将介绍其功能以及一些配置。

正确编译并运行cpp代码 需要创建工程项目

竞赛时候,按试卷要求每个题目都要建工程文件,.cpp  .in 文件 都是保存到这个目录下,

如果文件放错了位置 拷贝到工程文件下后,还需要 右键点击 工程名称   菜单 选择  add files  把文件加载到工程文件中。

考试结束前 保留每个目录下面的cpp文件,其他删除。

推荐将左边的 Management 窗口修改为 File,这样可以看到文件树(比赛的时候,就可以很方便的切换各个代码文件,打开样例等)。

Code::Blocks 的补全功能很完善,基本上都能补全。在下方可以看到一个 NativeParser,看到 Parsing Stage Done 之后就可以补全了。

使用自带的三个按钮分别进行编译/运行操作。会自动跳出一个终端(默认是 XTerm)。因为 XTerm 字实在是太小了,我们在设置了换成 Ubuntu 的自带终端。

然后就很正常了。

下一步是设置一些编译的开关。

点击 Settings->Compiler 即可进行设置。

一般来说,要打开的开关有

  • -std=c++14:规定 C++ 版本(竞赛使用 C++14)
  • -Wall:全部警告
  • -Wextra:额外警告
  • -Wshadow:警告局部变量覆盖
  • -O2:开启优化(竞赛是开启 O2 的)
  • -g:给 gdb 调试用(这个和 O2 不能一起开)

打开了开关后,在 Build Message 里就可以看到警告。比如说以下是一个很典型的错误,重定义了一遍全局变量。可以看到编译器确实发出了警告。

代码的编辑和调试

上文,我们介绍了 Code::Blocks 编译功能。然而在更多情况下,我喜欢直接使用命令行进行编译。

在一般情况下,你应该这么组织你的文件,最后提交的时候再把样例和可执行文件删除。

然后在 Code::Blocks 下就可以进行编码。注意 freopen。

在写代码时,前两行就是 freopen,并且后续不会删,也不会改,也不会注释。不要为了调试删除 freopen,请自行修改.in文件。

一个很常见的操作就是:编译、然后测试样例。可以使用 diff 实现。

我们用 && 连接语句。最终命令为:

1
2
3
4
g++ {FILE}.cpp -g -std=c++14 -Wall -Wextra -Wshadow -o {FILE} &&
cp {FILE}X.in {FILE}.in &&
time .\{FILE} &&
diff {FILE}X.ans {FILE}.out -Z

注意 diff 使用 -Z 代表忽略空格(下图未添加)。使用 time 计时。

可以看到,diff 没有任何输出,代表通过了样例。

如果要调试代码,使用 gdb。输入 gdb 可执行文件名

常用操作(本文不详述 gdb 使用):

  • b 行数/符号名:设置断点
  • r:开始运行
  • p 表达式:打印一次表达式
  • disp 表达式:一直显示表达式
  • u 行数:执行到某一行
  • n:下一步(不会进入函数)
  • s:下一步(会进入函数)

终端使用

你会发现,前面的操作都大量使用到了终端,我们来简要介绍一下 linux 下终端的使用。

终端命令

以下是一些常用的命令(不详述):

  • ls:列出目录
  • cd:切换目录
  • time 可执行文件:计时
  • cp 文件1 文件2:复制文件
  • diff 文件1 文件2:比较文件
  • mkdir:建立文件夹
  • rm:删除文件(我希望你不要把自己的代码删除了找不回来)
  • rmdir:删除文件夹
  • touch:创建文件,或更新修改日期
  • cat:输出某个文件的内容
  • head/tail:输出某个文件的前/后几行。
  • >,<,>>,2>:重定向(不作详细介绍,自行了解)

路径

Linux 下有一些路径的快速表示。路径使用正斜杠。

  • .:当前目录
  • ..:父目录
  • ~:用户主目录
  • -:上一个目录

终端快捷键

和 Windows 略有不同,望周知。

  • Tab:补全
  • :上一条命令
  • Ctrl+Shift+C:复制
  • Ctrl+Shift+V:粘贴
  • Ctrl+C:停止程序
  • Ctrl+Z: 将程序放入后台(并不是停止程序,在 Windows 下该键是输入 EOF),按错了可以直接关 terminal 或者用 fg 调回来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星卯教育tony

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值