From 53753612a324633c54f1d6a283542b59c014258a Mon Sep 17 00:00:00 2001 From: leimingqiang Date: Thu, 8 Dec 2022 10:48:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: leimingqiang --- README.md | 13 +- ...7\345\242\203\346\220\255\345\273\272 .md" | 92 ++++ ...43\345\206\263\346\216\252\346\226\275.md" | 405 +++++++----------- ...4\344\272\224\347\211\210\357\274\211.pdf" | Bin 4 files changed, 245 insertions(+), 265 deletions(-) create mode 100644 "\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/OH\347\216\257\345\242\203\346\220\255\345\273\272 .md" rename "\345\275\222\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" => "\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" (37%) rename "\345\275\222\346\241\243/C#\345\205\245\351\227\250\347\273\217\345\205\270\357\274\210\344\270\255\346\226\207\347\254\254\344\272\224\347\211\210\357\274\211.pdf" => "\345\275\222\346\241\243/\350\265\204\346\226\231/C#\345\205\245\351\227\250\347\273\217\345\205\270\357\274\210\344\270\255\346\226\207\347\254\254\344\272\224\347\211\210\357\274\211.pdf" (100%) diff --git a/README.md b/README.md index 0ab8033..9363021 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,9 @@ # The sunset is especially gentle. #### 介绍 +lmq个人仓 - -#### 安装教程 - -嘻嘻嘻 - -#### 使用说明 - -1. 望 -2. 闻 -3. 问 -4. 切 - #### 参与贡献 1. Fork 本仓库 diff --git "a/\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/OH\347\216\257\345\242\203\346\220\255\345\273\272 .md" "b/\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/OH\347\216\257\345\242\203\346\220\255\345\273\272 .md" new file mode 100644 index 0000000..2baf3f2 --- /dev/null +++ "b/\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/OH\347\216\257\345\242\203\346\220\255\345\273\272 .md" @@ -0,0 +1,92 @@ +### 前期准备工作 ### +第一次电脑设置 +1.打开设置->安全和更新->开发者选项,选择为“开发人员模式”; + +2.Win + R运行control appwiz.cpl指令,在启用或关闭Windows功能中勾选适用于Linux的Windows子系统和虚拟机平台两项启用(注:没有虚拟机平台的,请升级Windows系统,Win10 版本号为 2004(内部版本19041或更高)),重启; + +3.以管理员身份打开PowerShell并运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 开启Windows子系统功能; + +配置环境步骤 +1.windows官方商店下载安装ubuntu20.04并配置root用户密码,刚进入会提示你输入用户账号密码,然后sudo passwd设置root密码,设置root密码之前会验证你刚刚设置的用户密码。 + +2.WSL文件映射在\\wsl$路径下,通过\\wsl$\Ubuntu-20.04打开文件所在位置,右键此电脑添加网络映射驱动 + +3.windows命令窗口查看当前wsl版本: wsl -l -v ,升级为2:wsl --set-version Ubuntu-20.04 2 (这里的ubuntu版本根据你的具体情况而定) + +--------------------上述为wsl所需步骤,如使用VM等请忽略上述步骤----------------------- + +4.执行:ls -l /bin/sh,如果为dash环境则需要修改为bash。sudo dpkg-reconfigure dash,选择No,将Ubuntu shell由dash修改为bash。 +5.配置git与ssh公钥:https://www.jianshu.com/p/0c88bcaaaf13 + +git配置 +配置用户名 +git config --global user.name "用户名" +配置邮箱 +git config --global user.email "用户邮箱(与git上绑定的一致)" +查看配置信息 +git config --global --list +生成公钥 +ssh-keygen -t rsa -C "用户邮箱(同上)" + +查看公钥 +cat ~/.ssh/id_rsa.pub +测试配置是否成功 +ssh -T git@gitee.com + +6.将上面的公钥配置到gitee公钥 (gitee点头像--设置--安全设置--ssh公钥--添加公钥:把上面复制的公钥粘贴进去) + +7.安装依赖 +sudo apt-get update +sudo apt-get upgrade #可选 +sudo apt install python3-pip +sudo apt-get install python3-setuptools python3-pip -y +sudo pip3 install --upgrade pip + +sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3-pip ruby + +sudo apt-get install default-jdk && sudo apt-get install libssl-dev && sudo apt-get install genext2fs +sudo apt-get install u-boot-tools && sudo apt-get install mtools &&sudo apt-get install mtd-utils +sudo apt-get install scons && sudo apt-get install gcc-arm-none-eabi && sudo apt-get install gcc-arm-linux-gnueabi +sudo apt-get install genext2fs && sudo apt-get install liblz4-tool && sudo apt-get install openssl +sudo apt-get install libssl-dev && sudo apt install libtinfo5 + +8.安装repo 必须先切换为root,装完切换回普通用户 +su root +curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo +chmod a+x /usr/local/bin/repo +pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests + +9.安装git lfs +curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash +sudo apt-get install git-lfs +git lfs install + +10.将python3建立软链接到python + +sudo rm -rf /usr/bin/python +sudo ln -s /usr/bin/python3 /usr/bin/python + +11.repo拉代码 +(1) 初始化repo +repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify +repo init -u git@gitee.com:openharmony/manifest.git -b monthly --no-repo-verify(monthly分支) +repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.2-Beta3 --no-repo-verify +# 拉取指定日期代码 +repo forall -c 'commitID=`git log --before "yyyy-MM-dd HH:mm" -1 --pretty=format:"%H"`;git reset --hard $commitID' +https://blog.csdn.net/fanyun_01/article/details/127129523 +(2)拉取代码 +repo sync -c # 下载代码等待时间长 +repo forall -c 'git lfs pull' +bash build/prebuilts_download.sh + + +13.安装hb: +①运行如下命令安装hb + python3 -m pip install build/lite +②设置环境变量。 + vim ~/.bashrc + 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 + export PATH=~/.local/bin:$PATH +生效环境变量 + source ~/.bashrc +##### \ No newline at end of file diff --git "a/\345\275\222\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" "b/\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" similarity index 37% rename from "\345\275\222\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" rename to "\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" index 798f368..3054f31 100644 --- "a/\345\275\222\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" +++ "b/\345\275\222\346\241\243/\345\270\256\345\212\251\346\226\207\346\241\243/\347\274\226\350\257\221\351\227\256\351\242\230\350\247\243\345\206\263\346\216\252\346\226\275.md" @@ -1,253 +1,152 @@ -D:\aaaaa\docs\HiSpark-AI-Camera-Developer-Kit\Software\tools -拷贝的虚拟机使用方法: -1、修改用户(可选操作),原用户pwb3/root密码:1 - https://blog.csdn.net/salove_y/article/details/79953651 - -一、Ubuntu更改密码步骤: -1、进入Ubuntu,打开一个终端,输入 sudo su转为root用户。 注意,必须先转为root用户!!! -2、sudo passwd user(user 是对应的用户名) -3、输入新密码,确认密码。 -4、修改密码成功,重启,输入新密码进入Ubuntu。 - -二、Ubuntu更改用户名步骤: -1、进入Ubuntu,打开一个终端,输入 sudo su转为root用户。 注意,必须先转为root用户!!! -2、gedit /etc/passwd ,找到代表你的那一行,修改用户名为新的用户名。 注意:只修改用户名!后面的全名、目录等不要动! -3、gedit /etc/shadow,找到代表你的那一行,修改用户名为新用户名 -4、gedit /etc/group,你应该发现你的用户名在很多个组中,全部修改! -5、修改完,保存,重启。 - -注意:修改的时候要格外小心,不要打错一个字母。 - -提示:如果你要修改密码和用户名的话,请先修改密码,重启后,再修改用户名,重启。如果你先修改用户名,再修改密码的话,可能会导致你登录不了Ubuntu。 - - -2、修改git用户名及git绑定邮箱 -https://www.cnblogs.com/cokefentas/p/14727592.html - -git安装与卸载 -apt-get install git apt-get remove git - -git配置 -配置用户名 -git config --global user.name “wb” -配置邮箱 -git config --global user.email “wang_bo@hoperun.com” -查看配置信息 -git config --global --list -生成公钥 -ssh-keygen -t rsa -C "wang_bo@hoperun.com" - -查看公钥 -cat ~/.ssh/id_rsa.pub -测试配置是否成功 -ssh -T git@gitee.com - -3、repo加权限 -cd ~ -sudo curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo -sudo cp repo /usr/local/bin/repo && sudo chmod a+x /usr/local/bin/repo -4、代码路径 - /home/用户名 - - - -## 一、环境安装 -1. https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-package-environment.md -2. https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-setting.md - - -## 二、源代码获取 -https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-sourcecode-acquire.md - -repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify -repo init -u git@gitee.com:openharmony/manifest.git -b monthly --no-repo-verify(monthly分支) -repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.2-Beta3 --no-repo-verify -repo sync -c -repo forall -c 'git lfs pull' - -## 三、需要额外安装的软件: - -- flex -- bison -sudo apt-get install default-jdk && sudo apt-get install libssl-dev && sudo apt-get install genext2fs && sudo apt-get install u-boot-tools && sudo apt-get install mtools &&sudo apt-get install mtd-utils -sudo apt-get install scons && sudo apt-get install gcc-arm-none-eabi && sudo apt-get install gcc-arm-linux-gnueabi && sudo apt-get install genext2fs && sudo apt-get install liblz4-tool && sudo apt-get install openssl -sudo apt-get install libssl-dev && sudo apt install libtinfo5 - - -## 四、编译 - -1. 编译 L2 获取 prebuilts: -```shell -bash build/prebuilts_download.sh # 下载并解压 prebuilts 压缩包到指定位置 -``` -./build.sh --product-name rk3568 --build-target dsoftbus_standard_test - - - -2. L2 编译命令: -```shell -./build.sh --product-name hispark_taurus_standard 3516 -./build.sh --product-name rk3568 --ccache --build-target make_all --target-cpu arm64 3568 64位 -./build.sh --product-name rk3568 --ccache --build-target make_all 32位 -./build.sh --product-name rk3568 --ccache --build-target make_test UT -``` -./build.sh --product-name rk3568 --fast-rebuild - -repo sync -c --no-tags -j1 --fail-fast - -编译xts[进入对应目录] -./build.sh product_name=rk3568 suite=communication system_size=standard (communication替换为对应的,如acts、dcts等) -## F&Q(持续更新 - -### 1. 异常情况不知道怎么具体怎么解决,编译问题三板斧用起来! -- 删除 out - -```shell -rm -rf out -``` -- 更新工具链: -```shell -./build/prebuilts_download.sh -``` -- 更新二进制和代码: -```shell -# 二进制更新 -repo forall -c "git lfs pull" -# 代码更新 -repo sync -c --no-tags - -# 拉取指定日期代码 -repo forall -c 'commitID=`git log --before "yyyy-MM-dd HH:mm" -1 --pretty=format:"%H"`;git reset --hard $commitID' -https://blog.csdn.net/fanyun_01/article/details/127129523 -``` -git checkout . - -代码拉取失败: - -rm -rf developtools - -repo sync --force-sync - -显示: -error: Unable to fully sync the tree. -error: Checking out local projects failed. -Failing repos: -foundation/communication/dsoftbus -Try re-running with "-j1 --fail-fast" to exit at the first error. - -repo forall -c 'git reset --hard ; git clean -fdx'(慎用) - - -编译打包失败: - - apt-get install genext2fs - - apt-get install clang - - -gitee 提交代码 -git clone https://gitee.com/lei-mingqiang/communication_dsoftbus_16.git 私仓地址 -分支 -git clone https://gitee.com/lei-mingqiang/communication_dsoftbus_16.git -b 分支名 - -提交 -git status -git diff -git add . -git commit -s - -git push origin master /分支名 - -本地修改强推 -git add . -git commit --amend -git push origin -f - - -ut测试用例编译命令: - ./build.sh --product-name Hi3516DV300 --build-target make_test 3516 - ./build.sh --product-name rk3568 --build-target make_test 3568 - --build-target dsoftbus_standard_test - - ./build.sh --product-name rk3568 --build-target dsoftbus_standard_test - -./build.sh --product-name rk3568 --ccache --build-target dsoftbus_test --target-cpu arm64 - -run -t FUZZ -ts OpenAuthSessionFuzzTest -run -t UT -tp dsoftbus_standard -tm connection -ts DiscManagerTest -run -t UT -tp dsoftbus_standard -tm connection -ts DiscSdkTest -run -t UT -tp dsoftbus_standard -tm connection -ts softbus_conn_manager_test - -hdc file send D:\test_64\test\unittest\dsoftbus_standard\discovery\DiscSdkTest /data/test/ -修改p2p使能: -vim adapter/default_config/feature_config/standard/config.gni - - -daily构建版本 -http://ci.openharmony.cn/dailybuilds - -转测版本路径https://gitee.com/openharmony-sig/oh-inner-release-management/blob/master/Release-Testing-Version.md - -hdc_std shell "mount -o rw,remount /" -for %f in (*.so) do hdc_std file send %f /system/lib/ -推so: -hdc_std shell "mount -o rw,remount /" -for %f in (*.so) do hdc_std file send %f /system/lib64/ - -hdc_std -t 7001005458323933328a519c2fa83800 shell "mount -o rw,remount /" -for %f in (*.so) do hdc_std -t 7001005458323933328a519c2fa83800 file send %f /system/lib64/ - -hdc_std -t 7001005458323933328a52dc31c73800 shell "mount -o rw,remount /" -for %f in (*.so) do hdc_std -t 7001005458323933328a52dc31c73800 file send %f /system/lib64/ - -推测试用例 -hdc_std file send C:\Users\lmq\Desktop\T\RefreshLNN\BusCenterSdkTest_MID /data/test -板子文件出本地 -hdc_std file recv /data/udp2.pacp ./Desktop - - - - -L0恒玄 -hb set -root . -bestechnic - > display_demo -编译 -hb build -f - -工具链出现此情况 -Traceback (most recent call last): - File "/home/liusong/build/prebuilts_download.py", line 293, in - sys.exit(main()) - File "/home/liusong/build/prebuilts_download.py", line 287, in main - _hwcloud_download(args, copy_config, args.bin_dir, args.code_dir) - File "/home/liusong/build/prebuilts_download.py", line 138, in _hwcloud_download - _npm_install(args, code_dir, unzip_dir, unzip_filename) - File "/home/liusong/build/prebuilts_download.py", line 192, in _npm_install - raise Exception(err.decode()) -Exception: npm WARN using --force I sure hope you know what you are doing. -npm ERR! Maximum call stack size exceeded - -npm ERR! A complete log of this run can be found in: -npm ERR! /root/.npm/_logs/2022-08-25T06_37_20_784Z-debug.log - -cd arkcompiler/ets_frontend/ts2panda -rm package-lock.json -rm -fr node_modules/ - -查看依赖 -sed -in 's/\"-Wl,--as-needed\",/# \"-Wl,--as-needed\",/g' build/config/compiler/BUILD.gn -find . -name "*" -type f -printf "%p\n" | xargs -I param sh -c "echo param; readelf -d param | grep NEEDED" > bad.log - -门禁中format_check项失败 -./prebuilts/build-tools/linux-x86/bin/gn format gn路径 - -crash后查看堆栈信息 addr2line -Cfie so 进程号 - -错误: -make:**[Makefile:1162:vmlinux] - -sudo apt install dwarves -sudo apt install libelf-dev - - +拷贝的虚拟机使用方法: +1、修改用户(可选操作),原用户pwb3/root密码:1 + https://blog.csdn.net/salove_y/article/details/79953651 + +一、Ubuntu更改密码步骤: +1、进入Ubuntu,打开一个终端,输入 sudo su转为root用户。 注意,必须先转为root用户!!! +2、sudo passwd user(user 是对应的用户名) +3、输入新密码,确认密码。 +4、修改密码成功,重启,输入新密码进入Ubuntu。 + +二、Ubuntu更改用户名步骤: +1、进入Ubuntu,打开一个终端,输入 sudo su转为root用户。 注意,必须先转为root用户!!! +2、gedit /etc/passwd ,找到代表你的那一行,修改用户名为新的用户名。 注意:只修改用户名!后面的全名、目录等不要动! +3、gedit /etc/shadow,找到代表你的那一行,修改用户名为新用户名 +4、gedit /etc/group,你应该发现你的用户名在很多个组中,全部修改! +5、修改完,保存,重启。 + + +## 四、编译 +蓝区L1(3516)、L2(3568)下文统一称为L1/L2 不特殊说明默认编译为32系统 +1. 编译命令: + + +./build.sh --product-name hispark_taurus_standard L1 image +./build.sh --product-name rk3568 --ccache --build-target make_all --target-cpu arm64 L2 64位 image (蓝区基本已放弃) +./build.sh --product-name rk3568 --ccache --build-target make_all 32位 L2 image +./build.sh --product-name rk3568 --fast-rebuild 跳过预编译(基于上一次修改,不修改gn情况下可使用) + +测试用例编译命令:(包括UT,FUZZ,distributedtest,benchmark) +./build.sh --product-name hispark_taurus_standard --build-target make_test L1 +./build.sh --product-name rk3568 --ccache --build-target make_test L2所有用例(编译较多、时间较长, 建议仅编译自己子系统) +./build.sh --product-name rk3568 --build-target dsoftbus_test L2软总线用例 +./build.sh --product-name rk3568 --ccache --build-target dsoftbus_test --target-cpu arm64 + +恒玄开发板(L0) +hb set -root . +bestechnic + > display_demo +编译命令 +hb build -f + +编译xts[进入对应目录] /test/xts/ +./build.sh product_name=rk3568 suite=communication system_size=standard (communication替换为对应的,如acts、dcts等) +## 问题及建议 + +### 1. 异常情况不知道怎么具体怎么解决,编译问题三板斧用起来! +(1) 删除 out +rm -rf out + +(2) +./build/prebuilts_download.sh + +- 更新二进制和代码: +# 代码更新 +repo sync -c --no-tags +# 二进制更新 +repo forall -c "git lfs pull" + +修改自己部件后代码更新失败 +例: +error: Unable to fully sync the tree. +error: Checking out local projects failed. +Failing repos: +foundation/communication/dsoftbus +Try re-running with "-j1 --fail-fast" to exit at the first error. +git checkout . + +代码拉取失败: + +rm -rf developtools + +repo sync --force-sync + +回退代码到库上最新节点(先进行本地保存自身代码,再使用) +repo forall -c 'git reset --hard ; git clean -fdx' + + +更新工具链出现 + +npm ERR! Maximum call stack size exceeded +npm ERR! A complete log of this run can be found in: + +cd arkcompiler/ets_frontend/ts2panda +rm package-lock.json +rm -fr node_modules/ + +编译打包失败: + + apt-get install genext2fs + apt-get install clang + + +gitee 修改代码 +(1)拉取私仓 +先从主仓Fork一份至私仓,拉取代码 +git clone https://gitee.com/lei-mingqiang/communication_dsoftbus_16.git 私仓地址 +分支 +git clone https://gitee.com/lei-mingqiang/communication_dsoftbus_16.git -b 分支名 + +提交修改 +git status +git diff +git add . +git commit -s + +git push origin master/分支名 + +本地修改强推适用于上面提交修改一次后 +git add . +git commit --amend +git push origin -f(不分分支主干) + +跑测试套 +run -t FUZZ -ts OpenAuthSessionFuzzTest +run -t UT -tp dsoftbus_standard -tm connection -ts DiscManagerTest +run -t UT -tp dsoftbus_standard -tm connection -ts DiscSdkTest +run -t UT -tp dsoftbus_standard -tm connection -ts softbus_conn_manager_test + +推送文件进入设备 +hdc_std file send 本地文件路径(D:\test\xxxTest) 设备路径(如:/data/test) +hdc_std file recv 设备路径(/data/log/xxxx.log) 本地路径(C:\User\xxx\Desktop\UtLog) + +推送so +在存放so文件夹内打开控制台输入下方两条(lib与lib64实际为32位与64位so存放地址) +hdc_std shell "mount -o rw,remount /" +for %f in (*.so) do hdc_std file send %f /system/lib/ + +hdc_std shell "mount -o rw,remount /" +for %f in (*.so) do hdc_std file send %f /system/lib64/ + +日构件版本地址 +http://ci.openharmony.cn/dailys/dailybuilds + +转测版本路径 +https://gitee.com/openharmony-sig/oh-inner-release-management/blob/master/Release-Testing-Version.md + + + +查看依赖 +sed -in 's/\"-Wl,--as-needed\",/# \"-Wl,--as-needed\",/g' build/config/compiler/BUILD.gn +find . -name "*" -type f -printf "%p\n" | xargs -I param sh -c "echo param; readelf -d param | grep NEEDED" > bad.log + +格式化gn文件 +./prebuilts/build-tools/linux-x86/bin/gn format gn路径 + +crash后查看堆栈信息 addr2line -Cfie so/用例名 进程号 + +错误: +make:**[Makefile:1162:vmlinux] + +sudo apt install dwarves +sudo apt install libelf-dev \ No newline at end of file diff --git "a/\345\275\222\346\241\243/C#\345\205\245\351\227\250\347\273\217\345\205\270\357\274\210\344\270\255\346\226\207\347\254\254\344\272\224\347\211\210\357\274\211.pdf" "b/\345\275\222\346\241\243/\350\265\204\346\226\231/C#\345\205\245\351\227\250\347\273\217\345\205\270\357\274\210\344\270\255\346\226\207\347\254\254\344\272\224\347\211\210\357\274\211.pdf" similarity index 100% rename from "\345\275\222\346\241\243/C#\345\205\245\351\227\250\347\273\217\345\205\270\357\274\210\344\270\255\346\226\207\347\254\254\344\272\224\347\211\210\357\274\211.pdf" rename to "\345\275\222\346\241\243/\350\265\204\346\226\231/C#\345\205\245\351\227\250\347\273\217\345\205\270\357\274\210\344\270\255\346\226\207\347\254\254\344\272\224\347\211\210\357\274\211.pdf" -- Gitee