ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OI-wiki 实战指南:在 Windows 上使用 WSL 搭建 NOI Linux 兼容的竞赛开发环境

OI-wiki 实战指南:在 Windows 上使用 WSL 搭建 NOI Linux 兼容的竞赛开发环境 OI-wiki 实战指南在 Windows 上使用 WSL 搭建 NOI Linux 兼容的竞赛开发环境【免费下载链接】OI-wiki:star2: Wiki of OI / ICPC for everyone. 某大型游戏线上攻略内含炫酷算术魔法项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki导读本文是 OI-wiki 工具链文档中关于 Windows Subsystem for LinuxWSL的完整实战指南。它以 NOI 系列竞赛的 Linux 环境要求为出发点系统讲解如何在 Windows 10/11 上安装、配置 WSL并在其中搭建与 NOI Linux 2.0 高度接近的 C/C 竞赛开发环境包括编译器、调试器、图形界面、中文环境与跨系统文件访问。读完本文你将能够独立完成「WSL 安装 → 分发版初始化 → 编译环境搭建 → GUI 与编辑器联动」的全流程操作并理解 WSL 1 与 WSL 2 的差异及升级路径。为什么 OI 选手需要 WSLNOI 竞赛环境要求与考场差异目前大部分学校的竞赛练习环境构建在 Windows 操作系统上而 NOI 系列赛自 2021 年 9 月 1 日起正式启用 NOI Linux 2.0Ubuntu 的修改版作为竞赛环境。其官方环境要求如下类别软件或模块版本备注说明系统Linux 内核5.4.0-42-generic64 位 x86 (AMD64)语言环境GCCgcc和g9.3.0C 和 C 编译器FPC3.0.4Pascal 编译器注自 2022 年起NOI 系列竞赛不再支持 Pascal 语言Python 22.7非竞赛语言Python 33.8非竞赛语言调试工具GDB9.1DDD3.3.12GDB 的 GUI 前端集成开发环境IDECode::Blocks20.03C/C IDELazarus2.0.6Pascal IDEGeany1.36C/C/Pascal轻量级IDE文本编辑工具Visual Studio Code1.54.3GNU Emacs26.3gedit3.36.2Vim8.1Joe4.6nano4.8Sublime Text3.2.2其它软件Firefox79.0浏览器Midnight Commander (mc)4.8.24文件管理器xterm (uxterm)3.5.3终端Arbiter-local1.02程序评测工具单机版考场环境与平时使用的 Windows 环境存在一系列差异这正是 OI 选手需要提前适应 Linux 的原因命令行操作与图形界面操作的差异例如在终端中复制粘贴的快捷键与图形界面不同想用CtrlC复制结果却退出了程序。Linux 与 Windows 的系统差异例如对文件路径写法、对文件名大小写的敏感性差异。编译器行为差异MSVC 与 GCC 的行为不同同一编译器的不同版本Windows 上和 Linux 上的 GCC、32 位和 64 位的 Linux GCC、GCC 7 和 GCC 8 等对变量初始化和数组下标越界的处理方式也不同。评测系统差异不同评测系统洛谷和 Arbiter的超时检查和内存限制检查方式有差异。这些差异可能导致「平时 AC 的程序模板到了 Linux 上就 WA」的尴尬情况。为防止考场上出现此类问题提前熟悉 Linux 系统的操作方法十分必要。为什么选 WSL 而不是虚拟机虽然 NOI 官网已放出 NOI Linux 的 ISO 镜像但虚拟机配置较为麻烦且 NOI Linux 默认自带图形界面无法保证在低配系统上流畅运行。适用于 Linux 的 Windows 子系统Windows Subsystem for LinuxWSL是一个为在 Windows 10、Windows 11 与 Windows Server 2019/2022 上能够原生运行 Linux 二进制可执行文件ELF 格式的兼容层。它可以让开发人员按原样运行 GNU/Linux 环境包括大多数命令行工具、实用工具和应用程序且不产生虚拟机开销与 Windows 共用 Host资源占用理论上比虚拟机小。WSL 的关键时间线与版本信息Windows 10 一周年更新推出 WSLWSL 12020 年 5 月更新中升级到 WSL 2截至 2020 年 6 月 1 日WSL 已支持安装 Ubuntu、openSUSE Leap、Kali、Debian 等主流 Linux 分发版WSL 仅在 64 位 Windows 10 版本 1607 及以上、Windows 11 和 Windows Server 2019/2022 中可用需要特别注意的是WSL 并不支持 NOI 评测用的 Arbiter因此它只能作为开发练习环境最终评测仍以考场环境为准。启用 WSL自动安装推荐Warning本部分适用于 Windows 10 版本 2004 及更高版本内部版本 19041 及更高版本或 Windows 11。如果你正在使用 2004 以下版本或你的电脑不支持虚拟化请阅读下面的手动安装一节如果你正在使用 1607 以下版本的 Windows 10你的系统不支持 WSL。以管理员身份打开 Windows PowerShell右击「开始」按钮选择 Windows PowerShell管理员或 Windows 终端管理员。输入wsl --install并等待所有组件自动安装完成。期间你可能需要重启计算机来启用必要的 Windows 功能。安装完成后可以在「开始」菜单或 Windows 终端的标签页中找到安装的发行版。接下来请转到下文「配置分发版」一节完成其他设置。手动安装下面介绍手动安装 WSL 的步骤。如果已经完成自动安装请跳过此部分。启用适用于 Linux 的 Windows 子系统在安装适用于 WSL 的任何 Linux 分发版之前必须启用「适用于 Linux 的 Windows 子系统」可选功能可选两种方式方式一使用命令行。以管理员身份打开 PowerShell 并运行Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux # 如果你只想要使用 WSL 1 请跳过此步骤 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform出现提示时重启计算机。方式二使用图形界面。打开「控制面板」→「程序和功能」→「打开或关闭 Windows 功能」勾选「适用于 Linux 的 Windows 子系统」与「虚拟机平台」点击确定后重启安装内核更新包如果你想要使用 WSL 1请跳过此步骤。WSL 2 需要下载并安装「适用于 x64 计算机的 WSL2 Linux 内核更新包」wsl_update_x64.msi。此文件来自微软官方 WSL 下载渠道安装后即可为 WSL 2 提供真正的 Linux 内核。设置 WSL 默认版本绝大部分情况下建议使用 WSL 2。在 PowerShell 中执行# 将 WSL 默认版本设置为 WSL 2 wsl --set-default-version 2Note关于 systemdWSL 1 完全不支持 systemd这意味着一些需要 systemd 的功能无法实现或需要其他替代方案WSL 2 已经内建对 systemd 的支持。如果需要使用 systemd而当前运行的发行版没有配置为启用 systemd可参考微软官方「WSL 中的高级设置配置」文档wsl-config中的 systemd 支持一节。安装 WSL 分发版进入 Microsoft Store搜索「Ubuntu」选择「Ubuntu」点击「安装」进行安装WarningMicrosoft Store 的 Ubuntu 会随着 Ubuntu 的更新而更新因此内容可能会有所改变。如果想获取稳定的 Ubuntu 长期支持版可以在 Microsoft Store 安装 Ubuntu 的 LTS 版本。配置分发版本章以 Windows 自动安装的 Ubuntu 为例。运行与初始化打开「开始」菜单找到 Ubuntu 并启动或使用wsl命令从 Windows 命令行启动。可以为 Ubuntu 创建应用程序磁贴或固定至任务栏方便下次打开。第一次运行 Ubuntu需要完成初始化此时终端会显示Installing, this may take a few minutes...等待一两分钟后系统会提示创建新的用户账户Installing, this may take a few minutes... Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: chtholly输入完用户名以后会提示输入密码。在 Linux 中输入密码时屏幕上不显示任何文字这属于正常现象Enter new UNIX password:设置好账户名和密码后WSL 就安装完成了Installation successful! To run a command as administrator (user root), use sudo command. See man sudo_root for details. chthollySENIORIOUS:~$安装编译环境前的准备初次安装好的系统不附带任何 C/C 编译器直接输入gcc或g会得到提示$ gcc The program gcc is currently not installed. You can install it by typing: sudo apt install gcc $ g The program g is currently not installed. You can install it by typing: sudo apt install g接下来需要手动配置环境推荐依次完成「更换软件源 → 安装中文环境 → 安装编译环境」三步。更换为国内软件源Ubuntu 默认的软件源在国外国内访问速度较慢可以换成国内软件源如清华 TUNA 的 Ubuntu 软件源帮助页中给出的源以加快速度。Warning使用与自己系统版本匹配的软件源请在镜像帮助页面中寻找与自己系统版本相配的源可使用sudo lsb_release -a查看 Ubuntu 版本。除非你知道你在做什么否则不要使用与自己的系统版本不匹配的源使用以下命令更新软件和软件源$ sudo su # 执行这行指令后终端提示符会从 $ 变成 #执行下文的命令前注意关注提示符 [sudo] xxx 的密码 # cp /etc/apt/sources.list /etc/apt/sources.list.bak # vim /etc/apt/sources.list ...按 i 之后将上文的源右键粘贴进去编辑完后按 Esc再输入 :wq 和回车 # apt update # apt upgrade -y # exit exit $操作要点先备份/etc/apt/sources.list便于出错时恢复编辑源列表使用vim编辑完成后按Esc输入:wq回车保存退出apt update刷新软件包索引apt upgrade -y将已安装软件升级到最新版本执行sudo su后提示符会从$变为#注意观察提示符以确认当前权限。安装中文环境依次执行以下命令安装中文语言包与中文字体# apt install language-pack-zh-hans -y # apt install fontconfig -y # apt install fonts-noto-cjk fonts-wqy-microhei fonts-wqy-zenhei -y # 中文字体 # dpkg-reconfigure localesdpkg-reconfigure locales会进入一个设置菜单不用管直接回车。下一个菜单中选择zh_CN.UTF-8回车Default locale for the system environment: None C.UTF-8 en_US.UTF-8 [zh_CN.UTF-8] Ok Cancel之后关闭 WSL 并重启系统就会变成中文。再依次输入下列命令把man帮助页替换为中文# apt install manpages-zh # sed -i s|/usr/share/man|/usr/share/man/zh_CN|g /etc/manpath.config可以用man help测试中文帮助页是否生效。安装编译环境执行以下命令安装基础 NOI 官方要求的环境# apt install -y build-essential vim ddd gdb fpc emacs gedit anjuta lazarus各软件包对应关系build-essential包含gcc、g和make等编译必需工具gdb/ddd命令行调试器及其 GUI 前端对应 NOI 环境的 GDB 9.1 / DDD 3.3.12vim/emacs/gedit命令行与图形化文本编辑器fpc/lazarusPascal 编译器与 IDE注意自 2022 年起 NOI 系列竞赛不再支持 Pascal 语言如需继续使用 Pascal 可选择性安装anjutaGNOME 桌面下的 C/C IDE。Note若需要安装其它软件包可以用sudo apt install 程序名。若想安装其他版本可以参考 Debian 官方的包管理手册。GUIDE 的安装请参考 OI-wiki 工具链文档中的Debian 或 Ubuntu 下 GUIDE 的安装一节其中详细说明了编译安装 GUIDE全称 GuidanceOI 圈常用的图形化调试工具的具体步骤。以下为一个编译运行示例程序$ vim cpuid.cpp ... $ g -Wall cpuid.cpp -o cpuid $ ./cpuid AMD Ryzen 5 1400 Quad-Core ProcessorNoteLinux 环境下可执行文件可以不带扩展名运行方式为./可执行文件名与 Windows 下的.exe习惯不同。进阶操作使用 WSLg 运行 GUI 程序如果你使用 Windows 10 19044 及以上版本或 Windows 11则可以使用 WSL 2 提供的集成的桌面体验WSLg。该功能允许直接安装并启动 Linux 桌面程序而无须其他额外配置WSL 会为你自动转发图形显示。安装图形环境并使用远程桌面连接如果你使用的版本尚不支持 WSLg可以尝试以下指南开启图形界面功能以下以 Xfce 为例。如果只想安装 Xfce可以执行$ sudo apt install xfce4 tightvncserver -y如果除 Xfce 外想要更多的软件可以执行$ sudo apt install xubuntu-desktop -yNote图形环境文件较大下载解包需要一定时间。配置 xrdpRemote Desktop Protocol 服务端$ sudo apt install xrdp -y $ echo xfce4-session ~/.xsession $ sudo service xrdp restart为了防止和计算机原有的远程桌面冲突需要更换默认端口。如果不更换端口将无法连接或与现有远程桌面产生冲突运行命令修改 xrdp 端口其中otherport为其他端口如3390$ sudo sed -i s/port[0-9]\{1,5\}/portotherport/ /etc/xrdp/xrdp.ini修改后xrdp.ini中[globals]一节的端口配置形如[globals] ... port3390运行sudo service xrdp restart然后去开始菜单用localhost:otherport来访问。使用非 root 账户登录WSL 中创建的普通用户与首次登录的界面分别如下使用 Xming 连接Xming 是 Windows 上的一款 X Server 软件可让 Windows 显示来自 Linux 的图形界面程序适用于不支持 WSLg 的旧版本系统。进入 Ubuntu 环境安装 xterm# apt install xterm -y退出 Ubuntu。从 Xming 官方下载地址下载最新的 Xming Server 并安装安装向导界面如下如果安装完后忘记勾选 Launch Xming需在开始菜单里手动打开 Xming之后再回到 Ubuntu键入如下指令$ DISPLAY:0 xterm即可在 Windows 桌面上看到弹出的 xterm 窗口如果使用了 xfce4可以在弹出的窗口中使用如下命令激活 xfce4$ xfce4-session运行结果如图所示在 Xming 中使用CtrlC就可以退出该界面WSL 与 Windows 文件的互访问Windows 下的硬盘会被自动挂载至 Linux 环境下的/mnt文件夹下。例如 C 盘在 WSL 下的路径为/mnt/c。双向访问示例PS C:\Users\chtholly bash /mnt/c/Users/chtholly$ echo Hello world! hello /mnt/c/Users/chtholly$ exit PS C:\Users\chtholly cat hello Hello world! PS C:\Users\chtholly echo Welcome! welcome PS C:\Users\chtholly bash /mnt/c/Users/chtholly$ cat welcome Welcome!注意上面的示例体现了两个方向从 WSL 写入/mnt/c下的文件Windows 侧可以直接读取从 Windows 侧创建的文件WSL 中同样可以立即访问。另外也可以从文件管理器访问 WSL 目录安装 WSL 后可以在资源管理器的侧边栏中发现Linux项在其中可以访问所有安装的发行版中的文件在资源管理器的地址栏或「运行」WinR中直接输入\\wsl$即可转到 WSL 的目录也可以直接使用诸如\\wsl$\Ubuntu\home\的路径访问其子文件夹。配合 Visual Studio Code 进行编辑如果习惯在 Windows 环境下使用 Visual Studio Code 进行代码编辑可以安装 VS Code 的Remote - WSL插件更方便地对 WSL 系统中的文件进行编辑。通过Remote - WSL可以在 Windows 下的 VS Code 界面中直接对 WSL 子系统进行操作更方便地编辑子系统目录下的文件、更方便地使用终端进行调试。具体使用方式在 WSL 中直接键入code .即可在该目录下直接唤出 Visual Studio Code对该目录下的文件进行编辑通过类似code filename的命令可以对指定文件进行编辑在插件Remote - WSL的 Getting Started 页面包含对于编辑操作的详细简介。Note关于 VS Code 中 C/C 的编译、调试与扩展配置如 C/C Compile Run、Code Runner、C/C 扩展与 GDB/LLDB 调试器配置可以参考 OI-wiki 的 Visual Studio Code 指南其中详细介绍了 F6/F7/F8 快捷键运行、Code Runner 一键运行及 GDB/LLDB 的完整配置流程。WSL1 升级为 WSL2Warning请确认已经完成前面 WSL1 的安装步骤。执行命令wsl -l -v可以看到当前 WSL 版本号如果显示为 1需要执行升级才能到 2。启用「虚拟机平台」功能使用 PowerShell 以管理员身份运行dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart然后重启电脑。下载 Linux 内核更新包x64 架构wsl_update_x64.msiARM64/AArch64 架构wsl_update_arm64.msi。设置分发版版本执行命令wsl --set-version 分发版名称 版本号例如将 Ubuntu 18.04 设置为 WSL 2 的命令为wsl --set-version Ubuntu-18.04 2这一步比较耗时需要将现有文件系统迁移到新的虚拟化格式执行完成后通过命令wsl -l -v来检查升级是否成功。FAQ如何在子系统下进行 xxx可以用自带命令行或者使用图形界面。比如说 vim在命令行中键入man vim会给出一份详尽的使用方法亦可使用vim --help。关于命令行的更多内容可阅读 OI-wiki 的命令行指南。对系统资源的占用量这个系统和 Windows 10 共用 Host所以理论上是比虚拟机占用小的。常见问题排查与官方资源WSL 的详细排查手段可参考微软官方常见问题WSL FAQ与 WSL 2 常见问题解答文档。以下是在 OI 场景下最容易遇到问题的三个环节及对应自查思路wsl --install失败或无法启动先确认 Windows 版本1607 及以上与虚拟化是否开启若为 2004 以下版本回到手动安装流程。apt下载缓慢确认/etc/apt/sources.list中的源与sudo lsb_release -a显示的版本一致并重新执行apt update。中文显示为乱码确认已安装language-pack-zh-hans与中文字体包并在dpkg-reconfigure locales中选择zh_CN.UTF-8后重启 WSL。参考资料与注释本文核心内容整理自 OI-wiki 的 WSL 使用指南文中涉及的环境要求以 NOI 官方公告为准WSL 的具体命令行为以所使用 Windows 版本实际输出为准。文中引用的原始资料包括洛谷日报关于在 Windows 10 上运行 Ubuntu 的教程、NOI Linux 2.0 发布公告、微软官方 WSL 安装文档、旧版 WSL 手动安装步骤、Ubuntu WSL 维基以及清华 TUNA 的 Ubuntu 镜像使用帮助。【免费下载链接】OI-wiki:star2: Wiki of OI / ICPC for everyone. 某大型游戏线上攻略内含炫酷算术魔法项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表