Loading

Windows11安装Ubuntu、C++与Robocup2d环境

至于为什么使用Windows11而不是Windows10,是因为Windows11支持直接打开Linux原生的GUI程序,对于开发测试球队非常方便。下面我们来看看如何在Windows11上进行球队环境的安装与球队的开发。

如果只是配置Windows上的C++开发环境,直接看第四部分
如果只是安装WSL可以跳过第三、四部分

第一部分 安装Ubuntu环境

BIOS开启虚拟化支持

电脑硬件必须支持并开启虚拟化,否则无法进行下面的步骤。
进入BIOS界面,开启虚拟化支持,至于详细的设置,请百度各厂家的BIOS界面信息。
下面是华硕主板的BIOS界面,选择高级->CPU->开启SVM模式。
image-20220611112056376.png

Windows启用WSL

按下WIN+S打开搜索界面,输入功能,点击启用或关闭Windows功能
image-20220611103611989.png
勾选:

  • 适用于Linux的Windows子系统
  • 虚拟机平台
  • Hyper-V(家庭版可能没有此选项,不是必需)
  • Windows虚拟机监控程序平台(不是必需)

image-20220611103656939.png
image-20220611103738692.png
点击确定,重启电脑。
在Windows设置中打开Windows更新设置,点击高级选项,打开接受其他Microsoft产品的更新,此步骤用于更新WSL。
image-20220611103815463.png
image-20220611103839172.png
之后再点击检查更新,这时便会出现关于WSL的更新,待更新完成重启电脑。
WSL到此便已配置完成。

安装Ubuntu

打开微软商店,搜索ubuntu,选择版本进行安装,推荐20.04版本。
image-20220611104246146.png

安装Windows Terminal

打开微软商店,搜索terminal,安装Windows Terminal
这是一个终端软件,之后的ubuntu的操作都在这里面执行。
image-20220611104323989.png
打开终端,图标长这个样子:
image-20220611105333542.png
设置默认终端应用程序为Windows终端
image-20220611110847592.png
如果想要每次打开终端都默认启动Ubuntu而不是PowerShell的话,如下配置一下:
image-20220611110943984.png
设置完之后记得点击保存。
Windows Terminal可以添加新的shell终端,至于如何配置请百度了解。但大部分情况下,重启一下终端之后,它便会自动识别并添加,比如先前安装的Ubuntu20.04。
image-20220611111207218.png
关于Windows Terminal更花里胡哨的配置(可以更换壁纸、透明度什么的),请自行百度。

启动Ubuntu系统

打开之前安装的终端,点击Ubuntu20.04:
image-20220611104542384.png

初始化

首次登陆需要你设置账号密码,按提示输入即可,这里需要注意的是密码输入时不会回显,放心输入,完成直接回车即可。

管理

这里推荐一个微软商店的APP:WSL Manager,可以快速创建同一系统不同用途的WSL实例,配合终端使用起来非常方便。

WSL的相关配置除了使用上述软件,也可以通过.wslconfig文件直接进行配置,更多信息请参考官方文档

第二部分 Ubuntu操作

换源

如果使用起来网速不是很慢,可以不换源

换源很简单,只需按照镜像站的说明文档操作即可,这里不再赘述。
直接使用命令替换,实现一键换源:

# 执行如下命令自动替换
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
# 一定不要忘记更新
sudo apt update -y

更新

输入命令即可更新:

sudo apt update -y
sudo apt upgrade -y

安装常用软件

以下软件会在后面的步骤中用到,请确保已经安装

sudo apt install build-essential cmake git vim python3 python3-pip gdb -y
# pip换源
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

第三部分 安装Robocup2d环境

以下不用看,直接跳到使用方法

这是一个Robocup2d环境安装脚本,只需要执行这个脚本就能一键安装完全部所需环境。
这个脚本会安装:

  1. rcssserver
  2. rcssmonitor
  3. librcsc
  4. soccerwindow2
  5. fedit2

安装过程会占满CPU以提高安装速度,建议在此安装期间不要运行其他程序。
安装脚本使用assets目录中的压缩包进行安装。如果你要更新本地的包,请直接将压缩包放入assets文件夹中,脚本会识别出最新的版本进行安装。注意压缩包内的文件夹名应与压缩包同名。比如rcssserver-17.0.1.tar.gz解压出来应该是rcssserver-17.0.1
脚本会自行识别Linux发行版本进行安装,目前该脚本仅支持Ubuntu/ArchLinux/Manjaro,其他发行版可以在env-others文件里配置安装依赖的命令,格式可以参考env-archlinux.sh或env-ubuntu.sh文件。

安装前提

首先假定你已经完成了基本的系统配置,比如你已经

  1. 给系统换好了源
  2. 更新了系统
  3. 安装了python3和python3-pip

使用方法

执行环境安装脚本:

git clone https://gitee.com/juzaizai/robocup2d-environment.git
cd robocup2d-environment
pip3 install -r requirements.txt
# 如果出现问题,请单独安装:
# pip3 install loguru
python3 install.py

测试运行

运行soccerwindow2

如果出现GUI界面,说明WSL环境安装正确

soccerwindow2

运行monitor

和soccerwindow2一样,也是一个观看球队比赛的可视化软件

rcssmonitor

运行server

按Ctrl+C终止server运行

rcssserver

运行fedit2

这是一个阵型编辑器

fedit2

终止server进程

killall -9 rcssserver

球队比赛

这里我们使用helios_base,使用的是github仓库,可能因为网络问题会有失败,请多试几次

首先拉取球队代码,执行一些初始化操作:

git clone https://github.com/helios-base/helios-base.git
cd helios-base
./bootstrap
./configure

在干别的之前,先启动server和monitor:

# 新开一个Ubuntu终端
rcssserver
# 新开一个Ubuntu终端
rcssmonitor

然后编译运行球队(之后有修改代码,也是需要执行下面的命令):

# 如果你的CPU支持多个线程,可以使用make -j$(nproc)加快编译速度
make -j$(nproc)
# 编译时可以在根目录,也可以在src目录,但start.sh只在src目录有
cd src
./start.sh
# 这时候在monitor上就能看到球队已经成功加载
# 如果提示没有权限,使用 chmod +x ./start.sh

但是只有一支球队是踢不了比赛的,这里提供一个现成的球队二进制文件供测试使用:
下载完成后放到Ubuntu系统的某个文件夹中(可参考第五部分),然后解压:

# 新开一个Ubuntu终端
tar -zxf yushan2022.tar.gz
cd yushan2022

运行球队yushan:

cd bin
./start.sh
# 如果提示没有权限,使用 chmod +x ./start.sh

在monitor界面中,按下Ctrl+K开始比赛。

编译时遇到的问题

此处记录本人在手动编译源码时遇到的问题及解决方法,可以跳过不看

soccerwindow2

soccerwindow2在安装时会遇到语法错误,可能是C++标准支持的问题,修改成符合C++11的标准即可,还好错误只有一处cout。
还有一处是提示double不能作为字符串,将其加上引号即可。

librcsc

这个包在编译时少了action这个模块,需要在两处修改:configure.ac和rcsc中的makefile.am,找到对应位置将action加进去即可(到这里使用make编译没问题,但cmake还是有问题,需要修改对应的cmakelist,但显然没必要浪费这个时间)。修改好之后再编译安装,fedit2和helios_base便可以正常使用。
问题还是有很多,只能说凑合用。

参考链接

rcsc库:librcsc
比赛服务器:rcssserver
比赛播放器1:rcssmonitor
比赛播放器2:soccerwindow2
阵型编辑器:fedit2
如果你喜欢C++编写(功能较为完善)的球队,可以参考:helios-base
如果你喜欢Python编写的球队,可以参考:Pyrus2D

第四部分 配置Windows下的C++开发环境

如果只在WSL中修改编译球队代码,不需要在Windows中再配置C++环境

配置MinGW环境

如果安装过VS的话可跳过此部分,省去MinGW配置的麻烦

下载解压

MinGW离线包下载地址:
解压缩到自己指定的安装目录。

配置环境变量

Win+S搜索环境变量,配置环境变量即可。

例如我的是:D:\x86_64-8.1.0-release-win32-seh-rt_v6-rev0\mingw64\bin
将此路径添加到Path变量中

image.png

案例测试

注意,终端要重新打开才能生效。

打开cmd窗口,输入g++ -v,如果出现下列信息就说明安装成功
image.png
新建一个文件,在里面输入如下内容

#include <iostream>
using namespace std;

// main() 是程序开始执行的地方

int main()
{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

在cmd窗口进入到文件的所在位置
image.png
运行代码
image.png
这时候会出现一个a.exe文件,运行它
image.png
ok,测试没问题,进行下一步。

安装VSCode

可参考这篇博客(非本人撰写,内容来自网络)

VSCode插件推荐

Chinese(Simplified)

vscode 编辑器汉化包,安装完成后重启即可。
image.png

C/C++ Extension Pack

C/C++扩展包,下载直接安装,它包含了 vscode 编写 C/C++ 工程需要的插件(C/C++、C/C++ Themes、CMake、CMake Tools和Better C++ Syntax等),和以前比不需要一个个找了。
image.png

Bracket Pair Colorizer

可以让括号具有颜色的小功能插件,各个成对儿的括号都会以不同的颜色进行区别。
image.png

highlight-words

字符高亮插件
image.png

GitLens

gitlens插件可以直接在光标处显示代码编写人以及时间;方便共同开发时候git做版本控制时候的相关代码管理。
image.png

git-commit-plugin

一款自动生成规范git提交信息的插件

提供了符合规范的提交格式,基于Angular 团队的 Angular Team Commit Specification。规范的 commit 信息首先提供了更多的历史信息,方便快速浏览。其次,可以过滤某些 commit(比如文档改动),便于快速查找信息。重点在于前端团队必备的git提交规范啊!!!不规范的提交后期维护项目真的很头疼,给个不规范的例子

image.png

Git Graph

可视化的版本分支演变图。

Remote Development

使用这个插件可以在很多情况下代替vim直接远程修改与调试服务器上的代码,同时具备代码高亮与补全功能,就和在本地使用VScode一样。

配置VSCode的C++开发环境

前提要求

  • 在windows上安装vscode和cmake
  • 安装VS或者gcc
  • 在vscode中安装cmakecmake tools插件

操作步骤

在vscode中打开一个空文件夹,按Ctrl+Shift+P调出命令输入界面,输入cq或cmake q,选择CMake:Quick Start,或直接按下回车键:
image.png
选择编译器,第一次运行可以选择让cmake扫描电脑上存在编译器(如果设置了环境变量的话),之后这里多出了GCC和Clang,我这里选择了GCC:
image.png
输入项目名称:
image.png
选择可执行程序:
image.png
之后cmake会自动生成相关配置文件,如下所示:
image.png
cmake语法并不在这里具体介绍。
点击底部状态栏里的小三角按钮,编译并运行程序:
image.png
然后点击底部状态栏里的小虫子按钮,试试调试功能。
这里出现了一个错误信息,提示我们调试器路径不对:
image.png
这里不要去修改launch.json文件,要想一劳永逸地解决这个问题,需要修改cmake tools插件中的配置。
按下快捷键Ctrl+,进入设置搜索面板,输入@ext:ms-vscode.cmake-tools debug找到CMake的调试设置,点击编辑settings.json。
image.png
将miDebuggerPath改为正确的gdb调试器路径,比如我这里是D:\x86_64-8.1.0-release-win32-seh-rt_v6-rev0\mingw64\bin\gdb.exe,保存后就可以正常调试了。
image.png
另,如果不喜欢弹出控制台,可以将externalConsole改为false。
正确调试的结果:
image.png
按下Ctrl+Shift+P,输入cmake,还可以执行其他任务。
image.png
点击左边栏CMake图标可以查看CMake工程。
image.png
此处也可以执行上述相关操作,比如,在hello.exe上右击也可以进行生成、调试、运行等操作,列表栏顶部也有相关操作的按钮。

其他注意事项

  • 截图右下角是用户执行的任务,可以点击垃圾桶按钮可以选择结束该任务。
  • 按下快捷键Ctrl+Shift+~,可以调出一个新的终端。
  • vscode可以跨平台和同步插件,Linux上的操作与Windows端一致。
  • 从已有源代码中构建CMake工程也是类似的步骤。
  • 使用GCC不能包含中文路径。
  • 用VS可能会更省心一些,省去一些配置麻烦
  • 如果只想单文件编译运行的话,可以尝试Vscode的Code Runner插件

VSCode常用快捷键

  • Shift+Alt+F 整理代码
  • Alt+左右方向键 后退/前进
  • Alt+上下键 移动行
  • Shift+Alt+上下键 复制行
  • F2 重构
  • Ctrl+鼠标左键 跳转函数(可配合Alt+左右方向键)
  • 其他操作多在右键菜单中可以找到,不用刻意记,经常用就自然记住了

第五部分 Windows与Ubuntu的联动

接下来到了最激动人心的地方了:Windows与Ubuntu的梦幻联动!

Ubuntu中打开文件资源管理器

文件资源管理器打开后你便可以进行你在Windows上一切熟悉的操作!

在终端的Ubuntu系统中输入explorer.exe .用文件资源管理器打开当前目录,.表示当前目录,..表示上一层目录,比如explorer.exe ..打开上一层目录。

用VSCode打开Ubuntu系统中的项目

你可能需要安装VSCode的相应扩展:Remote Development

在终端的Ubuntu系统中输入code .使用VSCode打开当前文件夹。

Ubuntu访问C盘

D盘同理

在终端的Ubuntu系统中输入cd /mnt/c即可进入C盘目录。
再输入ls试下效果

Windows访问Ubuntu文件

在文件资源管理器的路径栏中输入linux,或者在左侧列表框中找到linux目录,可以看到所有的wsl目录了,其中就有我们刚才安装的Ubuntu系统。

Ubuntu打开GUI程序

WSL2 GUI的Ubuntu系统可以直接打开Linux的GUI应用程序,就像Windows原生程序一样。

WSL修改CPU核数和内存限制

新建文件C:\Users<UserName>.wslconfig,修改memory和processors条目:

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=8GB 

# Sets the VM to use two virtual processors
processors=24

# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
# kernel=C:\\temp\\myCustomKernel

# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
# kernelCommandLine = vsyscall=emulate

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
# swap=8GB

# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
# swapfile=C:\\temp\\wsl-swap.vhdx

# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
# pageReporting=false

# Turn off default connection to bind WSL 2 localhost to Windows localhost
# localhostforwarding=true

# Disables nested virtualization
# nestedVirtualization=false

# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
# debugConsole=true

重新启动终端即可生效。

参考链接:Advanced settings configuration in WSL | Microsoft Docs

posted @ 2022-09-28 19:22  橘崽崽啊  阅读(1145)  评论(1编辑  收藏  举报