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 发行版)。
https://i-blog.csdnimg.cn/direct/4896a42c418447a2baddf04d8f4e07f0.png
编辑器
NOI Linux 提供了许多编辑器(没有 Dev C++ 测验的时候也没网)。
建议使用Code::Blocks。下面具体介绍各个编辑器的利弊。
VS Code
作为编辑器的神,具有轻量级的长处。但是,由于系统自带的版本没有 C++ 插件,断网状态无法自行安装,测验时放弃,一样平常可以安装插件做练习。
https://i-blog.csdnimg.cn/direct/b2382bba3d264109a09a1861ddba5911.png
Sublime Text
一样只有高亮不能补全。一个小亮点是配置 Task 的操纵还算简单,然而并不保举。
https://i-blog.csdnimg.cn/direct/b93b345d63cb47658e6db9e6fc7bf153.png
Vim
一个纯命令行的编辑器,以学习曲线陡峭而闻名,配置也较复杂,并不保举使用。
当然,为了你 ssh 上服务器能改两行字,建议学习一下最基本的操纵(i, esc, :wq, :q!)。也是许多大神编程的必备,装神可以学学。
https://i-blog.csdnimg.cn/direct/1f0eb8a83e204c21bfeaa150d147a87d.pngGeany
一个轻量级 IDE。有部分补全,但是还是不够好用。
https://i-blog.csdnimg.cn/direct/efccb529205943bda1d97a01f0807d00.pngCode::Blocks(重点)
这是 NOI Linux 下最好用的一个编辑器。下文将介绍其功能以及一些配置。
精确编译并运行cpp代码 需要创建工程项目
https://i-blog.csdnimg.cn/direct/0ebf8dd3b20d46baa403f5750a99de58.png
https://i-blog.csdnimg.cn/direct/4766c70cf76a41ae8f36b8aa59684526.png
https://i-blog.csdnimg.cn/direct/8e6bc43897aa474aa4202dea5d8fec2f.png
https://i-blog.csdnimg.cn/direct/314766223047426b97a5edcf747623ae.png
竞赛时候,按试卷要求每个标题都要建工程文件,.cpp .in 文件 都是保存到这个目录下,
如果文件放错了位置 拷贝到工程文件下后,还需要 右键点击 工程名称 菜单 选择 add files 把文件加载到工程文件中。
测验结束前 保存每个目录下面的cpp文件,其他删除。
保举将左边的 Management 窗口修改为 File,这样可以看到文件树(比赛的时候,就可以很方便的切换各个代码文件,打开样例等)。
https://i-blog.csdnimg.cn/direct/e8728f7a9bc74ea7b72fd5f50b7fb26c.pngCode::Blocks 的补全功能很美满,基本上都能补全。在下方可以看到一个 NativeParser,看到 Parsing Stage Done 之后就可以补全了。
https://i-blog.csdnimg.cn/direct/97b67eca07c54f67a7ac167b8bb61483.png使用自带的三个按钮分别进行编译/运行操纵。会自动跳出一个终端(默认是 XTerm)。由于 XTerm 字实在是太小了,我们在设置了换成 Ubuntu 的自带终端。
https://i-blog.csdnimg.cn/direct/7b3184b7918a47f6b48556f7bf9a2e07.png
https://i-blog.csdnimg.cn/direct/5a25488a14be40188f7095dec8dc2918.png然后就很正常了。
https://i-blog.csdnimg.cn/direct/035a1d1e1f1b4e1bab9d44fce7e5ede7.png下一步是设置一些编译的开关。
点击 Settings->Compiler 即可进行设置。
https://i-blog.csdnimg.cn/direct/d0ca5decbf7547568f1719e4f524aa76.png一般来说,要打开的开关有
[*]-std=c++14:规定 C++ 版本(竞赛使用 C++14)
[*]-Wall:全部警告
[*]-Wextra:额外警告
[*]-Wshadow:警告局部变量覆盖
[*]-O2:开启优化(竞赛是开启 O2 的)
[*]-g:给 gdb 调试用(这个和 O2 不能一起开)
打开了开关后,在 Build Message 里就可以看到警告。比如说以下是一个很典型的错误,重定义了一遍全局变量。可以看到编译器确实发出了警告。
https://i-blog.csdnimg.cn/direct/859a1dcfae9044f4925cd64a9df682b2.png代码的编辑和调试
上文,我们介绍了 Code::Blocks 编译功能。然而在更多情况下,我喜欢直接使用命令行进行编译。
在一般情况下,你应该这么组织你的文件,末了提交的时候再把样例和可实行文件删除。
https://i-blog.csdnimg.cn/direct/53658084c5104668b3d75ed1013c1c92.png然后在 Code::Blocks 下就可以进行编码。留意 freopen。
在写代码时,前两行就是 freopen,而且后续不会删,也不会改,也不会注释。不要为了调试删除 freopen,请自行修改.in文件。
https://i-blog.csdnimg.cn/direct/d01064199af342beadc3223c4cd02344.png一个很常见的操纵就是:编译、然后测试样例。可以使用 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 计时。
https://i-blog.csdnimg.cn/direct/b05ccd524e574add96272fbd87c02c8c.png可以看到,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 调返来。
[*]https://i-blog.csdnimg.cn/direct/104922fb192c4a0ebdf62c4532a25cae.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]