建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
昇腾论坛 主题:15263帖子:87189

【技术干货】

通过WSL2 Ubuntu18.04搭建CANN算子开发环境

DavilSu 2021/10/19 1627

通过WSL2 Ubuntu18.04搭建CANN算子开发环境

不少开发者的个人电脑的主操作系统为Windows,但CANN算子的开发需要在Linux环境中进行。这个问题常见的解决方案为安装Windows+Linux双系统,或者安装VMware、VirtualBox一类的虚拟机软件,在上面配置Linux虚拟机环境。但这两种方案有一定的局限性,安装双系统每次切换系统都需要重启,且会涉及到修改启动引导等一系列问题,安装比较麻烦,而安装虚拟机的方案宿主机和虚拟机的文件交换较为麻烦,且占用的资源量较多。

有没有一个轻量级、安装便捷、文件交换方便且性能优秀的解决方案呢?Windows Subsystem for Linux(WSL)就满足了这几个需求。WSL2作为WSL1的升级版,有着完整的 Linux 内核和完全的系统调用兼容性,甚至可以调用GPU加速计算。

本文记录了在WSL2 Ubuntu18.04发行版上配置CANN算子开发环境的全过程,供各位昇腾开发者参考。


1. 环境介绍

CPU:Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz

内存:16G

系统版本:Windows 10 Pro x64 21H1

CANN版本:社区版 5.0.3.alpha005


2. 安装WSL2系统内核

安装前请确认Windows和BIOS是否支持并已经开启虚拟化。

参考链接:https://docs.microsoft.com/zh-cn/windows/wsl/install

2.1 简易安装

如果您的Windows版本为Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。那么安装WSL2将较为简单,只需要在Powershell中输入以下命令,WSL2就会自动下载下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装Ubuntu18.04。

wsl.exe --install -d Ubuntu-18.04

2.2 手动安装

如果您的Windows版本高于1903,但低于版本2004,可以升级Windows至2004及更高的版本,然后执行简易安装的命令,如果不希望进行升级,则可采用手动安装的方式。低于1903的版本,必须升级Windows版本才能安装WSL2,否则只能安装WSL1。安装步骤如下

2.2.1 启用WSL:以管理员身份打开PowerShell,运行以下代码:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2.2.2 启用虚拟机功能:以管理员身份打开PowerShell,运行以下代码后重启计算机:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2.2.3 下载Linux内核

下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载后双击安装。

2.2.4 设置WSL2为默认WSL版本

wsl --set-default-version 2

2.2.5 下载Ubuntu18.04发行版

打开Microsoft Store,搜索Ubuntu 18.04 LTS,点击“获取”按钮进行下载安装。

1.PNG

2.3 检查是否已经安装Ubuntu 18.04

当开始菜单中出现Ubuntu 18.04 LTS时,说明WSL2 Ubuntu18.04发行版已经安装成功。

2.4 配置Ubuntu 18.04

点击Ubuntu 18.04 LTS的图标后,会出现以下对话框。稍等片刻后,会要求您设置用户名和密码,请按照提示进行配置。

3.PNG

配置完成后,如果出现以下界面,就说明Ubuntu已经配置完成。本文配置的用户名为davilsu,下文中涉及路径设置时,需要把用户名改为上一步设置的用户名。

4.PNG


3. 安装系统依赖项

3.1 替换软件源并进行升级

Ubuntu官方源服务器不在国内,下载速度非常慢,把软件源服务器换成国内源能加速下载软件包,大幅缩短下载时间,有效提升开发者的幸福感。常用的国内软件源包括清华源、阿里源等等,这里以阿里源为例,进行软件源配置。注意这里一定要选Ubuntu 18.04的软件源。

清华源链接:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

阿里源链接:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11E2BHIM

3.1.1 输入sudo su命令并输入密码,进入root用户

3.1.2 备份Ubuntu官方软件源

mv /etc/apt/sources.list /etc/apt/sources.list.bak

3.1.3 编辑软件源

vim /etc/apt/sources.list

将您在镜像站复制的软件源粘贴在vim文本编辑器中,以阿里源为例。

6.PNG

7.PNG

输入wq! 进行保存

3.1.4 进行更新

配置好软件源后,建议进行一次软件源更新,并更新系统软件。命令如下:

sudo apt update && apt upgrade -y

9.PNG

等待软件更新完成即可,具体耗时和网速、磁盘性能等因素有关。

3.2 安装CANN依赖项

参考链接:https://support.huaweicloud.com/instg-cli-cann503-alpha002/atlasdeploy_03_0002.html

3.2.1 安装系统依赖项

WSL2 Ubuntu 18.04安装完成后,已安装的软件包并不完全包含CANN依赖项,需要执行以下命令,安装系统依赖项。

sudo apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3 libopenblas-dev libncursesw5-dev

10.PNG

3.2.2 安装Python3.7

由于WSL2 Ubuntu 18.04默认安装的Python版本为Python3.6,不满足版本为3.7的要求,需要手动编译Python3.7并安装。从更新日志可以看到,在Python3.7.8后不再进行bug修复,仅进行安全性修复。

12.PNG

目前Python3.7的最新版本为3.7.12,经测试该版本可用,建议安装最新版本。这里以3.7.12为例进行编译安装,有特殊需求的开发者可以自行选择需要的Python3.7版本。

安装步骤如下:

参考链接:https://support.huaweicloud.com/instg-cli-cann503-alpha002/atlasdeploy_03_0022.html

3.2.2.1 下载并解压Python3.7.12源码

wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz
tar -zxvf Python-3.7.12.tgz

13.PNG

3.2.2.2 配置Python3.7.12编译

cd Python-3.7.12
./configure --prefix=/usr/local/python3.7.12--enable-loadable-sqlite-extensions --enable-shared

14.PNG

15.PNG

可以将第二行的命令改为

./configure --prefix=/usr/local/python3.7.12--enable-loadable-sqlite-extensions --enable-shared --enable-optimizations

这样会启用Python编译优化选项,有助于提高Python运行性能,但是加上这个参数后会大幅延长Python编译时间。

3.2.2.3 编译安装Python3.7.12

make -j6
sudo make install

make命令后面的-j参数用于指定编译线程数,请根据CPU线程数和内存大小合理设置,一般不应超过CPU线程数,而更多的线程数也会提升内存的占用。本次安装测试环境CPU为六核十二线程,内存16G,线程数设为6较为合适。等待编译安装完成。

17.PNG

3.2.2.4 设置Python路径

分别在root用户和开发用户输入以下命令,编辑.bashrc文件

vim ~/.bashrc

在文件末尾添加以下内容

export LD_LIBRARY_PATH=/usr/local/python3.7.12/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python3.7.12/bin:$PATH

配置效果如下

32.PNG

在root用户下,执行以下命令,修改Python3.7.12文件夹权限,使所有用户可以访问执行Python3.7.12。

chmod -R 777 /usr/local/python3.7.12

安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。

python3 --version
pip3 --version

3.2.2.5 设置pip源

将pip源设置为国内源,提升下载速度,这里以华为源为例。

mkdir ~/.pip 
cd ~/.pip
vim pip.conf

修改文件内容为

[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120

3.2.2.6 安装CANN Python依赖项

输入以下命令进行安装

pip3 install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests

4. 安装CANN软件包

4.1 下载CANN toolkit软件包

进入CANN社区版官网:https://www.hiascend.com/software/cann/community

选择x86-64,下载Ascend-cann-toolkit_5.0.3.alpha005_linux-x86_64.run。

23.PNG

此时下载的文件位于Windows下,如何拷贝进Linux呢?微软考虑到了这一点,Windows下的分区全部挂载在/mnt目录下,下图中/mnt下的c文件夹就映射着Windows下的C盘

24.PNG

此时我们输入以下命令,就可以将Windows下载的安装包拷贝到Linux下了,这里假设软件包下载在Windows的桌面上。

cp /mnt/c/Users/DavilSu/Desktop/Ascend-cann-toolkit_5.0.3.alpha005_linux-x86_64.run .

这样就实现了Windows到Linux的文件拷贝操作。

4.2 安装CANN toolkit软件包

登入开发用户,进入软件包所在目录,执行以下命令进行安装。

./Ascend-cann-toolkit_5.0.3.alpha005_linux-x86_64.run --install

36.PNG

出现这个界面时,CANN toolkit就安装完成了。

接下来输入vim ~/.bashrc,在文件末尾加上下面内容,实现打开终端自动配置CANN toolkit路径

source /home/davilsu/Ascend/ascend-toolkit/set-env.sh

38.PNG

输入wq! 进行保存。

至此WSL2 Ubuntu18.04 CANN算子开发环境就搭建完成了。


5. 配置Windows下VSCode WSL连接(可选)

上面的步骤已经完成了WSL2 Ubuntu CANN算子开发环境的配置,但WSL默认不会安装GUI桌面,算子开发工作只能在终端下进行,这并不是非常方便。

这一部分主要介绍VSCode连接WSL2 Ubuntu18.04的步骤,实现在Windows下使用VSCode进行代码开发。

5.1 下载安装VSCode

请在Windows环境下载VSCode安装包,双击运行并按照指引进行安装。

下载连接:https://code.visualstudio.com/

5.2 安装Remote-WSL插件

安装完成后,打开VSCode,在扩展商店里搜索Remote-WSL插件并安装。


27.PNG

安装完成后,左侧功能栏的扩展商店下方会出现一个远程连接的图标,点击后就可以看到刚才配置的Ubuntu 18.04。


屏幕截图 2021-10-19 191423.jpg

点击连接到WSL的图标。


屏幕截图 2021-10-19 191423.jpg

Windows下的VSCode就连接到了WSL2 Ubuntu18.04,此时的WSL就等同于一个配置好了CANN开发环境的远程服务器。

29.PNG

5.3 代码编写测试

这里编写了一个简单的Add TIK算子用于测试,可以看到tikdb正常运行。

39.PNG





回复8

kswil
0 0
2021/10/19 20:33

感谢分享,用心了

2021/10/20 16:57

感谢分享

2021/10/20 17:52

谢谢分享

2021/10/20 17:54

学习了,感谢分享

JammySate
0 0
2021/10/20 18:04

感谢分享

2021/10/26 17:24

感谢分享。

DevFeng
0 0
2021/11/13 15:37

感谢分享

2021/11/16 17:40

感谢分享

上划加载中
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

DavilSu

发帖: 20粉丝: 2

发消息 + 关注

更新于2021年10月20日 20:53:39 1627 8
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 通过WSL2 Ubuntu18.04搭建CANN算子开发环境

通过WSL2 Ubuntu18.04搭建CANN算子开发环境

不少开发者的个人电脑的主操作系统为Windows,但CANN算子的开发需要在Linux环境中进行。这个问题常见的解决方案为安装Windows+Linux双系统,或者安装VMware、VirtualBox一类的虚拟机软件,在上面配置Linux虚拟机环境。但这两种方案有一定的局限性,安装双系统每次切换系统都需要重启,且会涉及到修改启动引导等一系列问题,安装比较麻烦,而安装虚拟机的方案宿主机和虚拟机的文件交换较为麻烦,且占用的资源量较多。

有没有一个轻量级、安装便捷、文件交换方便且性能优秀的解决方案呢?Windows Subsystem for Linux(WSL)就满足了这几个需求。WSL2作为WSL1的升级版,有着完整的 Linux 内核和完全的系统调用兼容性,甚至可以调用GPU加速计算。

本文记录了在WSL2 Ubuntu18.04发行版上配置CANN算子开发环境的全过程,供各位昇腾开发者参考。


1. 环境介绍

CPU:Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz

内存:16G

系统版本:Windows 10 Pro x64 21H1

CANN版本:社区版 5.0.3.alpha005


2. 安装WSL2系统内核

安装前请确认Windows和BIOS是否支持并已经开启虚拟化。

参考链接:https://docs.microsoft.com/zh-cn/windows/wsl/install

2.1 简易安装

如果您的Windows版本为Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。那么安装WSL2将较为简单,只需要在Powershell中输入以下命令,WSL2就会自动下载下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装Ubuntu18.04。

wsl.exe --install -d Ubuntu-18.04

2.2 手动安装

如果您的Windows版本高于1903,但低于版本2004,可以升级Windows至2004及更高的版本,然后执行简易安装的命令,如果不希望进行升级,则可采用手动安装的方式。低于1903的版本,必须升级Windows版本才能安装WSL2,否则只能安装WSL1。安装步骤如下

2.2.1 启用WSL:以管理员身份打开PowerShell,运行以下代码:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2.2.2 启用虚拟机功能:以管理员身份打开PowerShell,运行以下代码后重启计算机:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2.2.3 下载Linux内核

下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载后双击安装。

2.2.4 设置WSL2为默认WSL版本

wsl --set-default-version 2

2.2.5 下载Ubuntu18.04发行版

打开Microsoft Store,搜索Ubuntu 18.04 LTS,点击“获取”按钮进行下载安装。

1.PNG

2.3 检查是否已经安装Ubuntu 18.04

当开始菜单中出现Ubuntu 18.04 LTS时,说明WSL2 Ubuntu18.04发行版已经安装成功。

2.4 配置Ubuntu 18.04

点击Ubuntu 18.04 LTS的图标后,会出现以下对话框。稍等片刻后,会要求您设置用户名和密码,请按照提示进行配置。

3.PNG

配置完成后,如果出现以下界面,就说明Ubuntu已经配置完成。本文配置的用户名为davilsu,下文中涉及路径设置时,需要把用户名改为上一步设置的用户名。

4.PNG


3. 安装系统依赖项

3.1 替换软件源并进行升级

Ubuntu官方源服务器不在国内,下载速度非常慢,把软件源服务器换成国内源能加速下载软件包,大幅缩短下载时间,有效提升开发者的幸福感。常用的国内软件源包括清华源、阿里源等等,这里以阿里源为例,进行软件源配置。注意这里一定要选Ubuntu 18.04的软件源。

清华源链接:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

阿里源链接:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11E2BHIM

3.1.1 输入sudo su命令并输入密码,进入root用户

3.1.2 备份Ubuntu官方软件源

mv /etc/apt/sources.list /etc/apt/sources.list.bak

3.1.3 编辑软件源

vim /etc/apt/sources.list

将您在镜像站复制的软件源粘贴在vim文本编辑器中,以阿里源为例。

6.PNG

7.PNG

输入wq! 进行保存

3.1.4 进行更新

配置好软件源后,建议进行一次软件源更新,并更新系统软件。命令如下:

sudo apt update && apt upgrade -y

9.PNG

等待软件更新完成即可,具体耗时和网速、磁盘性能等因素有关。

3.2 安装CANN依赖项

参考链接:https://support.huaweicloud.com/instg-cli-cann503-alpha002/atlasdeploy_03_0002.html

3.2.1 安装系统依赖项

WSL2 Ubuntu 18.04安装完成后,已安装的软件包并不完全包含CANN依赖项,需要执行以下命令,安装系统依赖项。

sudo apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3 libopenblas-dev libncursesw5-dev

10.PNG

3.2.2 安装Python3.7

由于WSL2 Ubuntu 18.04默认安装的Python版本为Python3.6,不满足版本为3.7的要求,需要手动编译Python3.7并安装。从更新日志可以看到,在Python3.7.8后不再进行bug修复,仅进行安全性修复。

12.PNG

目前Python3.7的最新版本为3.7.12,经测试该版本可用,建议安装最新版本。这里以3.7.12为例进行编译安装,有特殊需求的开发者可以自行选择需要的Python3.7版本。

安装步骤如下:

参考链接:https://support.huaweicloud.com/instg-cli-cann503-alpha002/atlasdeploy_03_0022.html

3.2.2.1 下载并解压Python3.7.12源码

wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz
tar -zxvf Python-3.7.12.tgz

13.PNG

3.2.2.2 配置Python3.7.12编译

cd Python-3.7.12
./configure --prefix=/usr/local/python3.7.12--enable-loadable-sqlite-extensions --enable-shared

14.PNG

15.PNG

可以将第二行的命令改为

./configure --prefix=/usr/local/python3.7.12--enable-loadable-sqlite-extensions --enable-shared --enable-optimizations

这样会启用Python编译优化选项,有助于提高Python运行性能,但是加上这个参数后会大幅延长Python编译时间。

3.2.2.3 编译安装Python3.7.12

make -j6
sudo make install

make命令后面的-j参数用于指定编译线程数,请根据CPU线程数和内存大小合理设置,一般不应超过CPU线程数,而更多的线程数也会提升内存的占用。本次安装测试环境CPU为六核十二线程,内存16G,线程数设为6较为合适。等待编译安装完成。

17.PNG

3.2.2.4 设置Python路径

分别在root用户和开发用户输入以下命令,编辑.bashrc文件

vim ~/.bashrc

在文件末尾添加以下内容

export LD_LIBRARY_PATH=/usr/local/python3.7.12/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python3.7.12/bin:$PATH

配置效果如下

32.PNG

在root用户下,执行以下命令,修改Python3.7.12文件夹权限,使所有用户可以访问执行Python3.7.12。

chmod -R 777 /usr/local/python3.7.12

安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。

python3 --version
pip3 --version

3.2.2.5 设置pip源

将pip源设置为国内源,提升下载速度,这里以华为源为例。

mkdir ~/.pip 
cd ~/.pip
vim pip.conf

修改文件内容为

[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120

3.2.2.6 安装CANN Python依赖项

输入以下命令进行安装

pip3 install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests

4. 安装CANN软件包

4.1 下载CANN toolkit软件包

进入CANN社区版官网:https://www.hiascend.com/software/cann/community

选择x86-64,下载Ascend-cann-toolkit_5.0.3.alpha005_linux-x86_64.run。

23.PNG

此时下载的文件位于Windows下,如何拷贝进Linux呢?微软考虑到了这一点,Windows下的分区全部挂载在/mnt目录下,下图中/mnt下的c文件夹就映射着Windows下的C盘

24.PNG

此时我们输入以下命令,就可以将Windows下载的安装包拷贝到Linux下了,这里假设软件包下载在Windows的桌面上。

cp /mnt/c/Users/DavilSu/Desktop/Ascend-cann-toolkit_5.0.3.alpha005_linux-x86_64.run .

这样就实现了Windows到Linux的文件拷贝操作。

4.2 安装CANN toolkit软件包

登入开发用户,进入软件包所在目录,执行以下命令进行安装。

./Ascend-cann-toolkit_5.0.3.alpha005_linux-x86_64.run --install

36.PNG

出现这个界面时,CANN toolkit就安装完成了。

接下来输入vim ~/.bashrc,在文件末尾加上下面内容,实现打开终端自动配置CANN toolkit路径

source /home/davilsu/Ascend/ascend-toolkit/set-env.sh

38.PNG

输入wq! 进行保存。

至此WSL2 Ubuntu18.04 CANN算子开发环境就搭建完成了。


5. 配置Windows下VSCode WSL连接(可选)

上面的步骤已经完成了WSL2 Ubuntu CANN算子开发环境的配置,但WSL默认不会安装GUI桌面,算子开发工作只能在终端下进行,这并不是非常方便。

这一部分主要介绍VSCode连接WSL2 Ubuntu18.04的步骤,实现在Windows下使用VSCode进行代码开发。

5.1 下载安装VSCode

请在Windows环境下载VSCode安装包,双击运行并按照指引进行安装。

下载连接:https://code.visualstudio.com/

5.2 安装Remote-WSL插件

安装完成后,打开VSCode,在扩展商店里搜索Remote-WSL插件并安装。


27.PNG

安装完成后,左侧功能栏的扩展商店下方会出现一个远程连接的图标,点击后就可以看到刚才配置的Ubuntu 18.04。


屏幕截图 2021-10-19 191423.jpg

点击连接到WSL的图标。


屏幕截图 2021-10-19 191423.jpg

Windows下的VSCode就连接到了WSL2 Ubuntu18.04,此时的WSL就等同于一个配置好了CANN开发环境的远程服务器。

29.PNG

5.3 代码编写测试

这里编写了一个简单的Add TIK算子用于测试,可以看到tikdb正常运行。

39.PNG





昇腾 Windows

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

kswil

发帖: 14粉丝: 1

发消息 + 关注

发表于2021年10月19日 20:33:13
直达本楼层的链接
沙发
显示全部楼层

感谢分享,用心了

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复
发表于2021年10月20日 16:57:06
直达本楼层的链接
板凳
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

有点小偏执

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年10月20日 17:52:06
直达本楼层的链接
地板
显示全部楼层

谢谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

AlphaBravo

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年10月20日 17:54:47
直达本楼层的链接
5#
显示全部楼层

学习了,感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

JammySate

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年10月20日 18:04:37
直达本楼层的链接
6#
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复
发表于2021年10月26日 17:24:00
直达本楼层的链接
7#
显示全部楼层

感谢分享。

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

DevFeng

发帖: 462粉丝: 17

发消息 + 关注

发表于2021年11月13日 15:37:23
直达本楼层的链接
8#
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

加油O幸福

发帖: 386粉丝: 23

发消息 + 关注

发表于2021年11月16日 17:40:02
直达本楼层的链接
9#
显示全部楼层

感谢分享

点赞 评论 引用 举报

游客

您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200