NOI Linux 2.0 竞赛环境食用指北

NOI Linux 2.0 竞赛环境食用指北

终端

使用 Ctrl+Alt+T 在当前登录用户的目录 ~ 中打开终端,也可以在文件夹中 右键Shift+右键 在当前文件夹打开终端。

运行可执行文件需要加 ./,例如 ./<filename>。注意 Linux 中可执行文件是没有后缀名的。

mkdir 新建目录,ls 列出目录,cd 切换目录。但建议在图形化界面下操作。

可以将文件拖到黑窗中快速索引文件路径。

Ctrl+C 杀掉当前终端中运行的进程。

快捷键

这些都跟 windows 下一样。

Win+D 显示桌面。

Alt+Tab 切换窗口。

Win+Space 切换输入法。

注意新建文件夹不能使用 Ctrl+Shift+N

编译

g++ <filename>.cpp -o <filename> -std=c++14 -g -Wall -Wextra

可以加上 -fsanitize=address,undefined 检查数组越界和未定义行为,它会在运行出现错误时往终端中丢出信息。
不过注意程序运行时间会增加

在当前终端中开大栈 ulimit -s unlimited

编辑器

Code Blocks

一款自带调试功能的 IDE。

我不会用,界面好复杂而且好丑。

优点:自带 gdb 调试。

缺点:需要建项目,字体丑手感差。

VS Code

断网安装的环境的 VS Code 没有配置 tasks.json,因而不能生成和调试,但可以尝试默写调试文件。

不过也可以当一个不错的编辑器,自带好看的字体和颜色与好用的补全,而且它自带终端。

优点:自带终端,有好用的补全。

缺点:缺少配置文件不能生成和调试。

Geany(推荐)

下方状态栏拉到最下面有自带的虚拟终端,左侧边栏有一个文件资源管理器。

快捷键 F9 编译,F5 运行。

可以在 生成-设置生成命令c++命令-build 一栏设置编译选项。

Shift+F9 还可以运行文件所在目录下的 makefile

好像没有括号补全?有的,点击 工具-插件管理器 选择 auto-close 即可。

其他快捷键:Ctrl+F 查找,Ctrl+H 替换,Ctrl+K 删除一行。

优点:自带终端,可以方便设置编译选项。

缺点:没有 gdb

Sublime Text(推荐)

注意到时没有中文的。

Ctrl+Shift+B 选择生成方式,选择 make 可以执行 makefile
而选择 single c++ run 则以普通方式编译加运行。

之后在按 Ctrl+B 可以执行之前选择的生成方式。

注意 Sublime Text 虽然自带终端,但终端是不能标准输入的,这意味着需要文件读入。

而标准输出和 cerr 都可以显示在终端中。

注意它有一个打开文件夹功能,貌似是一个文件资源管理器是吧,但是注意你不应同时使用打开文件夹并且使用 makefile,因为它会在你打开的文件下运行 makefile而不是在当前文件所在的目录下运行 makefile,这会导致 make 失败。

其他快捷键:Ctrl+F 查找,Ctrl+H 替换,Ctrl+Shift+K 删除一行。

优点:自带单文件编译运行,还可以 makefile,并且有好看的界面与好用的代码补全。

缺点:终端不能输入,无 gdb

makefile

讲一下怎么写 makefile 文件。

在需要编译的文件所在目录下放一个名为 makefile 的文本文件,不需要后缀。

makefile 的格式为

[目标] : [依赖1] [依赖2] ...
[Tab] [命令行命令]

它会检测依赖与目标的保存时间,如果依赖更新,那么会执行命令。

如果要编译那么就是:

<filename> : <filename>.cpp
	g++ <filename>.cpp -o <filename> -g -Wall -Wextra

我们还可以编译后运行:

run : <filename>
	./<filename>
<filename> : <filename>.cpp
	g++ <filename>.cpp -o <filename> -g -Wall -Wextra

再配合上加栈与检查越界的选项,那么就是:

run : <filename>
	ulimit -s unlimited
	./<filename>
<filename> : <filename>.cpp
	g++ <filename>.cpp -o <filename> -g -Wall -Wextra -fsanitize=address,undefined

注:makefile 会检查目标与依赖的时间差异,这意味着,如果源文件没有改变,它就不会重新编译,这可以加快编译运行的速度。

工具

gdb 调试

gdb <filename> 打开文件并调试,<filename> 是可执行文件名。

源代码l 列出源代码。

l x 列出第 x 行附近的源代码,l name 列出函数 name 附近的源代码。

断点b x 在第 x 行插入断点。

d x 删除编号为 x 的断点,d 删除所有断点。

info breakpoints 查看当前所有断点。

运行r 运行,c 跳至下一断点,n 下一行,s 单步进入,q 退出调试关闭 gdb

until x 跳至第 x 行。

打印p x 打印变量 xp *x@100 打印 x 数组的前 100 项。

disp x 添加查看变量 x,每次单步都会显示值。

undisplay 解除所有查看的变量。

python3

终端输入 python3 回车打开 python

python3 <filename>.py 运行 .py 文件。

对拍

使用 system 调用终端命令,需要包含 <cstdlib><bits/stdc++.h>

./a 运行可执行文件。

diff 可以比较文件,-b 忽略行末空格,-B 忽略空行。

while(1) {
    system("./data");
    system("./a");
    system("./b");
    if(system("diff a.out b.out -B -b")) return 0;
}
posted @ 2025-01-04 19:17  dengchengyu  阅读(65)  评论(0)    收藏  举报