
银河麒麟系统V10 sp1 安装 wine 9.0如果你手头有一台装了银河麒麟系统V10 sp1的机器又恰好需要跑一些Windows下的应用尤其是政企环境里常见的单位内部软件、打印控件、老旧业务客户端那你大概率会碰到一个尴尬场景麒麟系统本身自带的软件商店里找不到想要的Windows工具直接双击exe又没有任何反应。这时候wine 9.0就是一个非常值得考虑的方案。wine的全称是“Wine Is Not an Emulator”它不是一个虚拟机而是通过重新实现Windows API层来让exe程序直接在Linux上运行。银河麒麟系统V10 sp1本身基于Linux内核默认没有wine 9.0这种新版本需要自己动手装。本文会从方案选型讲起然后给出完整的编译安装流程、常见配置技巧和问题排查思路适合政府、企业办公人员以及需要维护国产化系统的运维工程师参考。先说结果我最终通过源码编译的方式在银河麒麟系统V10 sp1x86_64架构上成功装好了wine 9.0并且稳定运行了微信、老版本Office文档查看器、以及某单位定制的业务流程客户端。整个过程踩了不少坑这里把经验和教训一起整理出来。1. 先想清楚为什么要在银河麒麟 V10 sp1 上折腾 wine 9.01.1 这个需求到底解决什么问题银河麒麟系统是国产化替代的大背景下最常见的操作系统之一政企办公场景中经常被指定使用。系统本身的稳定性、中文化、适配性都不错但最现实的问题在于生态大量单位内部的业务系统、老的OA插件、Ukey驱动、打印控件都只提供了Windows版本安装包有些甚至只支持特定版本的Windows环境。这时候wine的出现就解决了大问题。它不像虚拟机那样需要额外分配内存和磁盘、启动一个大镜像而是直接在Linux内核之上通过兼容层把Windows程序的系统调用转换成Linux能理解的操作。对使用者来说体验就是“双击exe装起来跑起来”。那为什么偏偏要装wine 9.0而不是用系统自带的旧版本因为wine新版本的兼容性和性能提升非常明显。wine 9.0引入了内建的WoW64模式可以在64位系统上更干净地跑32位程序、实验性的Wayland驱动、以及大量D3D和音频方面的改进。实测下来同样一个程序在旧版wine上启动报错在9.0上直接就能跑通。对日常办公场景这个差异大到你愿意多花半小时去编译。1.2 方案选型源码编译、软件仓库、容器化谁更靠谱在银河麒麟上装wine有几个常见路径我先把利弊摆出来免得大家走弯路。第一种是直接通过apt install wine安装。银河麒麟V10 sp1的软件源里有wine但版本普遍偏老大约是wine 5.0或更早。这个版本在跑新软件时会经常弹错误框尤其遇到需要.NET运行时或较新VC库的软件基本可以直接放弃。第二种是添加wine官方的apt仓库。技术上可行但有个问题wine官方仓库主要面向Ubuntu和Debian发行版而银河麒麟系统虽然基于Debian系但源地址和依赖版本并不完全一致强行添加后可能出现依赖冲突甚至把系统搞坏。不是不推荐而是不建议新手这么干。第三种是直接用源码编译安装。这是我在多次尝试后确定的方案优点是完全可控可以选择编译参数、只装自己需要的组件、不污染系统源也不依赖外部仓库是否兼容。缺点是编译过程耗时较长对依赖库要求高但只要能过编译这一步后面基本就稳了。另外提一句市面上还有Distrobox、Flatpak这类容器方案也可以用但它们本身依赖容器运行时在麒麟系统上还需要额外装环境对普通办公电脑来说显得太厚重不在本文讨论范围。最终我选择源码编译也是考虑到日后维护、升级、卸载都更干净。2. 环境准备动手前必须确认的 3 件事2.1 确认系统架构和版本号在开始之前一定要先确认银河麒麟系统的具体版本和CPU架构这一步省不了后面所有依赖和编译参数都依赖它。# 查看系统发行版信息 cat /etc/os-release # 查看内核版本 uname -a # 查看CPU架构 uname -m以我的机器为例输出如下NAMEKylin VERSIONV10 (sp1) IDkylin ID_LIKEdebian PRETTY_NAMEKylin V10 SP1 uname -m 结果为 x86_64确认是x86_64架构后就可以按x86_64的方式准备依赖。如果你拿到的是ARM版麒麟比如飞腾、鲲鹏CPU编译命令大体类似但部分依赖包的名称会有差异后面会专门提到。2.2 检查软件源并更新基础工具麒麟系统虽然基于Debian系但它的软件源默认指向的是麒麟官方源这一点千万别乱换否则容易导致依赖版本不一致。# 先看一眼源配置 cat /etc/apt/sources.list # 更新索引 sudo apt update # 安装基础编译工具 sudo apt install -y build-essential flex bison gettext建议在编译前把系统基础库先升级一遍避免因为某个库版本过旧导致./configure阶段报错。实测下来这一步能减少不少莫名其妙的编译问题。另外确认一下gcc版本wine 9.0要求gcc版本不低于4.6但实际建议至少7.x以上麒麟V10 sp1默认带的gcc版本是9.x所以问题不大。2.3 磁盘空间规划编译wine需要下载源码包约110MB左右解压后源码体积接近300MB编译过程中中间文件还会进一步膨胀建议至少预留5GB可用空间稳妥一点留20GB。如果你是安装到/usr/local目录下还需要确保根分区空间充足。# 查看磁盘空间 df -h这里提前踩个坑编译到一半如果磁盘满了不会立刻报错而是可能生成损坏的中间文件后面反复make clean、重新配置很折磨人。所以磁盘空间检查一定得做。3. 核心实操在银河麒麟 V10 sp1 上编译安装 wine 9.03.1 下载源码并校验完整性wine官方源码包可以在winehq.org官网下载也可以从国内镜像站获取。这里推荐直接从wine官网下载tar.xz格式的源码包下载后务必校验一下sha256防止源文件损坏。我自己下载的是wine-9.0.tar.xz。# 创建源码目录 mkdir -p ~/wine-build cd ~/wine-build # 下载源码官网地址https://dl.winehq.org/wine/source/9.0/ wget https://dl.winehq.org/wine/source/9.0/wine-9.0.tar.xz # 校验文件完整性 sha256sum wine-9.0.tar.xz我下载到的文件sha256值是a5eec8fcd90e9d9dcd6c2d4a4d30cc28528a8c4ed15817e87ac810c4f0e0b4a3之类的一长串。官方页面提供了权威的校验值下载后对比一致即可继续。曾经有一次我下载不完整解压报错排查了好久才意识到是文件问题所以千万别跳过校验。3.2 处理依赖库一个都不能少这一步是整个过程中最磨人的环节也是新手最容易卡住的地方。wine编译时会检查一连串的依赖库缺一个就报一个错。以下是我在麒麟V10 sp1x86_64上实测可用的依赖安装命令sudo apt install -y \ libc6-dev \ libgcc-9-dev \ libfreetype6-dev \ libfontconfig1-dev \ libx11-dev \ libxext-dev \ libxrandr-dev \ libxinerama-dev \ libxcursor-dev \ libxi-dev \ libxcomposite-dev \ libxdamage-dev \ libxfixes-dev \ libxrender-dev \ libxxf86vm-dev \ libxcb-shm0-dev \ libxcb-render0-dev \ libxcb-shape0-dev \ libgl1-mesa-dev \ libegl1-mesa-dev \ libgles2-mesa-dev \ libosmesa6-dev \ libpulse-dev \ libasound2-dev \ libudev-dev \ libusb-1.0-0-dev \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libcups2-dev \ libdbus-1-dev \ libunwind-dev \ libpcap-dev \ libvulkan-dev \ ocl-icd-opencl-dev \ libssl-dev \ libjpeg-dev \ libpng-dev \ libtiff-dev \ libncurses-dev这里稍微讲一下原理。wine在安装/运行Windows程序时需要将程序的API调用翻译成对Linux库的调用。比如渲染文字要用freetype画界面要依赖X11客户端库播放声音要对接ALSA或PulseAudio。这些依赖库直接决定了wine运行后的行为是否正常。比如你没装libpulse-devwine程序就没有声音输出而且编译时才报错很难一眼看出来是哪个依赖缺失。注意不要为了省事只装上面的一小部分。缺一个库./configure阶段就会对应少一项支持。有些库缺失时wine会自动降级但降级后的行为很怪比如缺libcups2-dev会导致打印机功能不可用缺libvulkan-dev会导致部分图形程序性能极差。一步到位反而省时间。3.3 编译参数选择与完整编译流程依赖库装齐之后进入源码目录开始配置和编译。wine 9.0支持一个关键参数--enable-win64它会在64位系统上生成纯64位wine。如果你还需要运行大量老的32位Windows程序则需要额外配置32位支持这个后面会展开讲。这里先以最常见的纯64位编译为例# 解压源码包 tar -xf wine-9.0.tar.xz cd wine-9.0 # 配置编译参数 ./configure --enable-win64 --prefix/opt/wine9--prefix/opt/wine9这个参数很实用它指定了安装路径。不建议直接安装在默认的/usr/local下因为后续升级、清理都麻烦。装在独立目录后想卸载直接删除该目录即可非常干净。配置过程一般需要1到3分钟如果依赖齐全会看到“configure: Finished. Do make to build Wine.”的字样。如果看到“configure: error: X development files not found”这类提示说明对应的依赖没装好先补齐再重新./configure。补完依赖后建议先执行make clean或直接删除源码目录重新解压避免残留的configure缓存影响判断。配置完成后开始编译这一步最耗时。编译时间取决于CPU核心数建议用-j参数开启多核并行# 使用4核并行编译参数可按CPU核心数调整 make -j4我测试的那台是8核CPU用make -j4编译大约花了25分钟。如果CPU核心更多可以适度加大并行数但不要超过物理核心数的两倍否则容易内存不足。编译过程不会有进度条只有一串串的编译输出。只要看到百分比增长的进度就耐心等着。如果中途报错先把错误信息截图或者复制下来大多数情况是缺少某个开发库根据包名apt安装后再重新make。这里特别提醒wine编译过程对内存有一定要求4GB内存跑-j4会有点吃力建议至少8GB内存。编译完成后执行安装sudo make install安装过程很快几十秒就完成。这时wine会被安装到/opt/wine9/bin/目录下。3.4 验证安装并初始化wine容器wine安装完成后简单验证一下版本/opt/wine9/bin/wine --version如果输出wine-9.0说明编译安装成功。不过此时还不能直接双击exe需要先初始化一个wine容器wineprefix。wine容器是Windows程序运行所需的“虚拟C盘”和环境配置目录默认位置在~/.wine。初始化命令非常简单/opt/wine9/bin/wineboot --init第一次运行会比较慢并且会弹出一个类似“正在安装Wine Mono”的提示窗口。Wine Mono是wine实现.NET兼容的重要组件建议等它安装完成或者用CtrlC跳过后后续手动安装否则部分依赖.NET的程序会启动失败。初始化完成后可以配置一下wine的基础设置/opt/wine9/bin/winecfg这个命令会打开图形化配置界面建议把Windows版本设置为Windows 10如果你的软件要求更老的系统也按需调整然后在“函数库”页签里加上常用的替代库。图形界面操作不复杂和Windows下的注册表编辑器风格相似。到这一步wine 9.0已经可以运行了。接下来要做的就是真正去跑一个Windows程序并让它稳定工作。4. 跑通第一个 Windows 程序 常用配置技巧4.1 用命令行运行 exe 的基本流程装好wine后运行exe最简单的方法就是把exe文件拖进命令行执行或者直接在文件管理器里右键选择“用wine打开”。这里更推荐命令行方式因为可以看清输出日志错误调试会方便很多。假设你有一个wechat_setup.exe安装包运行如下命令/opt/wine9/bin/wine ~/Downloads/wechat_setup.exe如果路径里有中文建议给路径加引号或者把exe复制到一个纯英文路径下再运行比如~/windows-app/。中文路径下某些老程序会因为编码问题找不到安装资源我踩过这个坑。命令执行后wine会启动一个Windows进程安装程序弹出来安装向导会引导你选择安装目录、创建桌面快捷方式。整个过程和Windows里几乎一模一样。安装完成后不需要额外配置直接用wine命令运行主程序即可。4.2 跑一个真实案例微信安装与登录以微信为例我在麒麟V10 sp1上用wine 9.0跑微信Windows版3.9.x的完整流程如下下载微信Windows安装包到~/windows-app/WeChatSetup.exe执行/opt/wine9/bin/wine ~/windows-app/WeChatSetup.exe安装向导正常弹出选择默认目录完成安装运行/opt/wine9/bin/wine ~/.wine/drive_c/Program\ Files/Tencent/WeChat/WeChat.exe第一次启动微信时会比较慢大概要15到20秒界面才完全显示。启动后扫码登录、聊天、收发文件都能正常工作。需要注意输入中文时如果用的是麒麟自带输入法部分版本可能出现候选词不跟随的情况个人建议安装一个独立的输入法框架比如fcitx5配合配置环境变量后体验会好很多。启动微信时建议加一个环境变量来降低渲染适配问题export WINEDEBUG-all export WINEDLLOVERRIDESmscoree,mshtml /opt/wine9/bin/wine ~/.wine/drive_c/Program\ Files/Tencent/WeChat/WeChat.exe这里WINEDEBUG-all是关闭wine的调试输出避免日志刷屏影响性能WINEDLLOVERRIDESmscoree,mshtml则是让wine使用Windows原生的.NET和HTML引擎而不是内置的Mono和Gecko能明显减少微信启动时的卡顿。4.3 让 wine 程序更好用的几个小配置跑通第一个程序后你有几个可以让日常使用更顺手的小配置。第一创建.desktop快捷方式让Windows程序像原生Linux应用一样出现在应用菜单里。方法是在~/.local/share/applications/目录下创建一个wechat.desktop文件内容大致如下[Desktop Entry] NameWeChat Exec/opt/wine9/bin/wine /home/yourname/.wine/drive_c/Program\ Files/Tencent/WeChat/WeChat.exe TypeApplication StartupNotifytrue CommentWeChat for Windows via Wine注意Exec里用了\转义空格。创建后运行update-desktop-database即可刷新菜单。第二安装winetricks这是一个辅助wine安装Windows运行库的小工具能一键安装vcrun2019、dotnet48、riched20等组件。很多国产办公插件依赖VB运行库或微软基础类库用winetricks可以省去手工找dll的麻烦。# 下载winetricks wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks chmod x winetricks sudo mv winetricks /opt/wine9/bin/ # 安装常用运行库示例 /opt/wine9/bin/winetricks vcrun2019 dotnet48winetricks在执行时会自动调用你指定的wine版本前提是WINE环境变量指向了正确的路径export WINE/opt/wine9/bin/wine export WINEPREFIX~/.wine第三调整音频输出。wine 9.0默认会优先使用PulseAudio如果系统未启动PulseAudio服务声音会失真或没有声音。可以用winecfg在“音频”标签页里将声音驱动切换为ALSA实测在麒麟系统上更稳定。4.4 把普通用户跑起来需要处理权限问题这里关联到很多用户在网上搜的“银河麒麟系统怎么修改普通用户密码”“chmod 777”之类的话题。在使用wine的过程中经常会遇到普通用户没有权限访问某些硬件设备、U盘、串口等情况。需要说明一点wine程序访问的硬件设备最终是通过Linux的设备节点来实现的所以权限管理依然遵循Linux的规则。比如你的Windows程序需要读串口先确认串口设备名ls /dev/ttyS* ls /dev/ttyUSB*然后需要把你的普通用户加入dialout组才能访问这些设备sudo usermod -a -G dialout $USER这里的权限原理是/dev/ttyS*、/dev/ttyUSB*设备节点的默认group是dialout只有root和该组成员才能读写。很多网上教程让直接chmod 777给设备节点临时用一用可以但重启后权限会重置而且777开放了设备节点的访问权限在办公环境里不推荐。采用用户组方式一劳永逸也更规范。同理访问U盘里的Windows程序时如果提示权限不足通常是因为U盘挂载在/media/$USER下且挂载时带了-o nosuid,nodev选项这些限制不影响wine运行exe但程序如果试图创建符号链接或挂载操作就会失败。遇到这种情况需要检查挂载选项是否过严必要时在/etc/fstab中调整。5. 常见问题与排查技巧实录5.1 编译时报错“configure: error: Cannot build a 32-bit program, you need to install 32-bit build libraries”这是麒麟V10 sp1上非常典型的问题尤其是在尝试编译带32位支持时。wine 9.0的默认--enable-win64其实已经包含了32位兼容层的支持但如果你的系统缺少32位glibc开发库就会报这个错。解决办法是启用i386架构并安装32位依赖# 开启i386架构支持 sudo dpkg --add-architecture i386 sudo apt update # 安装32位基础库 sudo apt install -y libc6-dev-i386 libgcc-9-dev-i386-cross这里要特别提醒麒麟V10 sp1的系统源里可能有部分i386包缺失如果apt提示找不到就不要强求完整的32位支持。纯64位wine已经能运行大多数现代软件那些有问题的老软件往往并不需要wine去解直接找替代方案更实际。5.2 运行程序黑屏、界面不刷新如果Windows程序能启动但窗口黑屏或者拖动窗口时画面严重撕裂大概率是wine的图形驱动没配对。wine 9.0默认会用OpenGL来渲染而麒麟系统默认桌面环境可能没启用硬件OpenGL加速。检查方法/opt/wine9/bin/winecfg在“显示”标签页中查看“渲染模式”如果是“OpenGL”尝试切换到“Vulkan”如果你的显卡驱动支持或者“Software”软件渲染性能差但兼容性最好。部分用户反映AMD显卡在麒麟系统下用wine 9.0配合Vulkan渲染效果不错。另外用环境变量强制指定图形后端也是一个快捷手段export WINEESYNC1 export WINEDLLOVERRIDESdxgi,d3d12bWINEESYNC1启用wine的esync机制可以降低同步开销改善卡顿。实测对微信这类界面频繁更新的程序帮助很大。5.3 中文乱码问题乱码是wine常见问题根源一般是缺少中文字体或者字体替换配置错误。麒麟系统本身已经带了文泉驿等中文字体但wine容器里的程序不一定识别到。解决办法复制Linux字体到wine的字体目录mkdir -p ~/.wine/drive_c/windows/Fonts/ cp /usr/share/fonts/truetype/wqy/wqy-microhei.ttc ~/.wine/drive_c/windows/Fonts/ cd ~/.wine/drive_c/windows/Fonts/ ln -s wqy-microhei.ttc msyh.ttc同时修改wine注册表里的字体替换设置这一步是治本的关键/opt/wine9/bin/wine regedit在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink中给“Tahoma”和“Microsoft YaHei”添加字体链接指向wqy-microhei.ttc。具体操作是双击字体键值在最后一行的末尾加,\0wqy-microhei.ttc。注册表操作完成后重启wine程序乱码问题基本解决。5.4 程序提示缺少DLL文件运行某单位的认证客户端时经常弹窗“缺少xxx.dll”。排查逻辑是先判断这个DLL属于系统DLL还是程序自带DLL。系统DLL比如msvcp140.dll、vcruntime140.dll直接用winetricks安装vcrun即可解决。程序自带DLL你需要去程序安装目录确认这个DLL是否在如果在但wine仍然提示找不到可能是程序用了绝对路径或环境变量来定位DLL。这种情况需要在winecfg的“函数库”页签中把该DLL的加载方式从“内建”改为“原生Windows”或反之。一个快速排查技巧是把报错信息完整截图然后用wine自带调试输出再跑一次WINEDEBUGloaddll /opt/wine9/bin/wine ~/.wine/drive_c/your-app/app.exe 21 | grep error这样能看到具体是哪个路径下加载失败比盲猜高效得多。5.5 常见错误速查表错误/现象原因解决方案configure阶段报缺少X11开发文件缺少X11头文件库安装libx11-dev及其相关libxext-dev等编译报错sandbox相关权限系统安全限制编译进程检查SELinux是否开启暂时调整策略或加启动参数wine启动报“Failed to load kernel32.dll”wineprefix初始化损坏备份~/.wine后删除重新wineboot --initWine的字体模糊字体平滑配置问题winecfg里取消“平滑字体边缘”或安装微软雅黑字体音频无声PulseAudio未启动systemctl --user start pulseaudio或winecfg切换ALSA从U盘启动exe无权限挂载选项限制执行权限添加exec挂载选项或用sudo mount -o remount,exec5.6 关于“银河麒麟系统太烂了”这种说法的一点体会我相信任何一个工具只要用得不顺手都会被贴上类似的标签但这往往不是系统本身的问题而是Linux生态和Windows生态之间天然存在的一道坎。银河麒麟系统在国产办公场景里的稳定性其实是相当不错的关键在于你要知道怎么调配它。wine 9.0在麒麟V10 sp1上编译安装虽然需要一点耐心但一旦搭好环境日常使用的满意度是能跟上来的。我也遇到过有人在群里吐槽“wine装个程序费老劲了”仔细一问是直接把安装包放在桌面中文目录下运行而且完全没有关注依赖库是否完整。这种问题真不是wine的锅。6. 让wine 9.0真正落地的三个扩展玩法6.1 多wine容器隔离办公软件与工作软件互不干扰默认只有一个~/.wine容器所有Windows程序挤在一起偶尔会出现依赖冲突。比如一个程序需要老版本的.NET另一个需要新版本两个环境互相覆盖最后都不稳定。建议用WINEPREFIX环境变量创建多个容器把不同用途的程序隔离开# 创建一个专门跑办公软件的容器 export WINEPREFIX~/.wine-office wineboot --init # 创建一个专门跑业务客户端的容器 export WINEPREFIX~/.wine-business wineboot --init每个容器都是独立的“Windows环境”互不影响。用的时候切换环境变量就行比如WINEPREFIX~/.wine-business wine ~/business-app/app.exe这个玩法在政企办公里极其有用。单位内部软件往往自带一堆老旧的运行库如果和微信装在一起很容易互相覆盖导致各自崩溃。用独立容器一次性解决。6.2 把wine程序封装成“假原生命令”如果你希望同事或自己都用得更顺手可以把wine命令封装成一个启动脚本放到/usr/local/bin/下面这样就能像运行Linux原生命令一样启动Windows程序。例如创建一个wxwork命令来启动企业微信#!/bin/bash export WINE/opt/wine9/bin/wine export WINEPREFIX~/.wine export WINEDEBUG-all exec /opt/wine9/bin/wine ~/.wine/drive_c/Program\ Files/WXWork/WXWork.exe $赋予执行权限chmod x /usr/local/bin/wxwork之后在终端里直接输入wxwork就能启动企业微信还可以在桌面环境的自定义快捷键里调用。这个方法尤其适合给不太熟悉Linux的同事做电脑时使用降低他们的上手门槛。6.3 自动更新wine版本的风险控制wine每隔一段时间会发布新版本如果你用的是编译安装升级流程也不复杂# 下载新版本源码 cd ~/wine-build wget https://dl.winehq.org/wine/source/9.x/wine-9.x.tar.xz # 重新编译安装 tar -xf wine-9.x.tar.xz cd wine-9.x ./configure --enable-win64 --prefix/opt/wine9 make -j4 sudo make install不过升级前一定确认两点一是你常用的Windows程序在新版本是否有已知的兼容性回退二是wineprefix的版本兼容性。多数情况下新版本可以直接使用旧的~/.wine目录因为wineprefix的设计就是向前兼容的。但如果升级后某个程序异常优先考虑重建一个干净容器再把软件装进去测试。经验建议生产办公用的电脑wine一旦调通就不要频繁追新。把当前版本用着就好新版本拿到测试机上验证没问题后再考虑是否切换。这不是保守而是办公场景中稳定大于一切的基本常识。7. 最后再聊聊实际操作中的体会整个wine 9.0在银河麒麟V10 sp1上的安装过程说难不难但确实考验耐心。我个人最深的体会是成功的编译安装只是开始真正的价值在于后续的调优和问题排查。wine本质上是一个兼容层它不可能百分百复刻Windows环境你需要去了解每个程序依赖什么运行库、底层调用哪些硬件接口、默认安装路径在哪里这些知识在排查问题时非常有用。还有一点值得提醒如果你在一个局域网办公环境里共享打印机、域认证这类企业功能wine的覆盖能力是有限的。打印机驱动如果只有Windows版在Linux下即便通过wine驱动成功打印队列的稳定性也一般。遇到这种情况建议优先看单位是否有对应的Linux打印解决方案而不是死磕wine。反正我实际测试下来把wine定位成“日常轻量软件运行器”是最合理的只要预期设置正确它带来的便利远大于折腾的麻烦。最后分享一个小技巧编译wine的源码目录不要着急删因为后续如果要用winetricks或手动补充某个dll经常需要回到源码目录里查一下头文件或样例配置。我自己一直保留着~/wine-build/wine-9.0这个目录有次排查一个Vulkan报错问题就是靠源码目录里的说明文档定位到正确的环境变量设置。多留一手总没坏处。