2026/10/17 21:58:40

麒麟V10上搭建UE5.3与Vscode开发环境:从源码构建到调试全攻略

麒麟V10上搭建UE5.3与Vscode开发环境:从源码构建到调试全攻略 最近帮组里把开发机上的UE5环境重新捋了一遍系统用的是麒麟V10引擎是5.3版本日常写代码全靠Vscode。这套组合不像Ubuntu Clion那样开箱即用中途踩了不少坑也摸出了一些门道。写这篇东西就是想把整个布置过程、背后的取舍、以及那些文档里不会写的细节一次说清楚如果你正好也要在麒麟V10上搭UE5.3加Vscode的开发环境直接照着做能省掉大半天的试错时间。整篇文章会从底层系统准备讲起再到UE5.3的源码构建然后Vscode的调试和代码补全配置最后把实战中遇到的高频问题做成一份排查清单。内容不长篇大论但每一步都给了具体命令和参数适合Linux上做游戏开发或者想用UE做可视化的朋友。无论你是第一次接触麒麟系统还是已经对UE5很熟但没试过Linux构建这篇文章都值得花几分钟读完。1. 项目整体设计思路与选型分析1.1 核心需求拆解先把这个项目标题拆开看其实有三个独立但必须串联起来的部分麒麟V10操作系统、UE5.3引擎、Vscode开发环境。三者缺一不可但又互相牵制。麒麟V10本质上是Linux发行版虽然它自带了一些图形界面和软件商店但骨子里还是标准POSIX环境。这意味着所有为Windows设计的开发工具都不能直接用UE5.3恰好有Linux版本但那个版本不是拿来就能用的默认给的是源码或者说编译中间产物需要你自己走一遍构建流程。UE5.3作为游戏引擎和实时渲染工具对系统底层的图形库、音频库、输入设备都有硬性要求比如X11、GLX、OpenGL、ALSA这些。麒麟V10虽然内置了很多驱动但开发库那一层往往不全尤其是头文件和链接库装系统的时候不会给你带全这就导致直接拉下来UE源码编译会报一堆找不到XXX.h的错误。Vscode作为编辑器和调试前端本身是Electron应用装起来不复杂复杂的是怎么让它跟UE5的构建系统和调试器打通。UE5自己内置了一套基于CMake的构建逻辑还有用XgennerateProjectFiles脚本生成的编译规则Vscode需要通过tasks.json和launch.json去调用这套规则才能实现按一个F5就跑起来、断电、看变量。这三个部分组合起来本质上就是在做一件开发环境下的事情把引擎编译出来把编辑器配好用起来。环境本身不是产品但开发环境不顺畅产品和业务都会被拖累。1.2 为什么选择这个组合我之所以选麒麟V10 UE5.3 Vscode这套搭配最重要的原因是组织内部有国产系统兼容性要求同时团队又想保持跨平台项目的一致性。你可能会问为什么不直接用Ubuntu非要麒麟这里不讨论政策层面只从技术角度说——麒麟V10的包管理器和驱动生态已经足够支撑UE5的日常开发尤其在x86架构上基本上能做到和Debian系发行版差不多的稳定性。UE5.3选择源码构建而不是使用预编译包是因为官方没有提供Linux的预编译编辑器只有Windows版有从Launcher一键装的模式。Linux版需要从Git仓库拉取全部代码然后自己编译这个过程在文档里写得比较模糊实际有不少隐藏依赖。不过好处是你能控制编译选项比如裁剪一些用不到的模块或者对特定GPU做优化。Vscode其实不是唯一选择CLion、Qt Creator、甚至Vim终端也能干但Vscode的优势在于轻量、插件生态丰富、调试配置直观。尤其处理UE这种超大项目时它的C插件能通过compile_commands.json拿到精准的编译参数代码高亮和跳转速度快而且不占用太多内存。这点很关键因为UE5编辑器本身已经吃内存吃紧再来一个笨重的IDE日常使用会很难受。1.3 整体流程路线图动手之前我先把大致流程画在脑子里第一步确认系统版本和架构装好编译工具链和UE5需要的系统库。这一步大概耗时二十分钟到半小时如果你用的已经是完整开发版系统时间可以更短。第二步拉取UE5.3源码这里要特别提醒源码仓库很大而且用了Git LFS必须提前配置好LFS否则文件下不全构建的时候凭空多出无数报错。第三步运行Setup脚本自动下载第三方依赖库这个阶段网络要好下载量非常大接近三十个G不信你试试就知道。第四步生成Makefile编译脚本并开始编译引擎。这一步耗时最长根据CPU核心数不同通常需要两到三个小时我多用-j参数把编译并发拉满但要小心内存不够。第五步等引擎能跑起来生成或者导入一个空工程验证编辑器启动、材质编辑器和蓝图都能正常工作。第六步配置Vscode包括安装C扩展、配置IntelliSense的includePath和defines、新建tasks和launch配置最后实现编译一次改错能断点断点能看变量。这路线看似简单但每一步都埋着坑下面逐章展开聊。2. 环境准备系统与依赖安装2.1 系统基础检查与网络配置拿到一台装好麒麟V10的机器先别急着装东西花五分钟把底子摸清楚。我用的是x86_64架构如果你那边是ARM架构后边的软件包名可能会有些差别编译参数也可能要调整。打开终端依次跑下面几个命令uname -a cat /etc/os-release df -h /home free -h这几个命令分别查看内核版本、发行版详情、主目录磁盘空间和内存大小。UE5.3构建需要非常可观的磁盘空间建议留出至少100G内存至少16G不然编译过程会直接被OOM打断。网络检查也很关键因为后续要从远端仓库拉几十个G的源码和依赖。麒麟V10默认用有线网络一般没太多问题但在公司里可能会遇到代理或防火墙限制。你可以这样确认连通性ping mirrors.xxx.com curl -I http://example.com如果内网走得通但外网拉不动就要提前配好镜像源或代理。我这里用的是周边公网资源直接把所有软件源切换到更快的镜像之后下载速度才稳得住。2.2 安装基础编译工具链UE5.3的编译工作主要依赖GCC和CMake。麒麟V10自带的软件仓库比较全直接用包管理器装即可。这里以Debian系分支为例如果你那边是Yum系把apt换成dnf或者yum就行。sudo apt update sudo apt install -y gcc g cmake make git build-essential装完后检查一下版本gcc --version cmake --version make --version git --version我这边测试时GCC版本是9.4CMake是3.16Make是4.2UE5.3对版本要求不算苛刻没有强制需要最新的编译器但建议GCC不低于9.2CMake不低于3.12否则后续生成Makefile的时候会报错。2.3 安装UE5.3的系统级依赖这一步是踩坑重灾区。很多人在编译UE5.3时遇到fatal error: X11/Xlib.h: No such file or directory就是因为系统里没有装X11开发头文件。UE的编辑器本质是一个图形应用它依赖一大堆X11相关的库同时还依赖OpenGL、openssl、ncurses等。推荐一次性把开发包全部装上sudo apt install -y libx11-dev libxcursor-dev libxrandr-dev libxi-dev \ libxinerama-dev libxxf86vm-dev libxext-dev libxfixes-dev \ libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev \ libgtk-3-dev libssl-dev libasound2-dev libpulse-dev \ libnss3-dev libnspr4-dev libtinfo-dev libatomic1注意libtinfo-dev这个库在比较新的发行版里可能不叫这个名字有时候需要装libtinfo5或者libtinfo.so.5这个兼容层。因为很多第三方二进制依赖的是.so.5版本但新系统只装了.so.6会导致UE的启动器打不开。另外如果你之前已经装过驱动图形相关的库一般不会缺。但我还是建议把mesa-common-dev装上因为它会提供GL相关的头文件UE5.3的渲染初始化依赖于它。还有一个小细节UE5.3需要Python来运行某些构建脚本。麒麟V10一般带Python 3.7或者3.8确保python3命令可用python3 --version如果没有安装python3-dev因为部分脚本需要Python开发头文件。装完依赖你可以做一个简单测试编译一个带窗口的Demo程序跑起来保证图形和X11环境没问题然后进入下一步。这个测试不是必须的但能提前把环境和引擎编译解耦开来减少后续排查问题的范围。3. UE5.3引擎的获取与编译3.1 获取UE5.3源码Git与LFS准备UE5.3的Linux版不像Windows那样能从官方启动器直接下载它要自己从仓库克隆。这一步建议直接使用官方仓库但实际操作中我遇到两个问题一是仓库体积巨大二是有大量二进制资产走LFS。先装Git LFSsudo apt install -y git-lfs git lfs install然后克隆源码仓库。仓库URL这里不写具体地址你直接用发行版对应的仓库就行。注意克隆时一定要加上--depth 1不行UE的构建脚本会切换分支浅克隆反而会出问题。所以我直接全量克隆git clone gitgithub.com:xxx/ue5.3.git拉取时间取决于网络我这边的内网源大概花了四十分钟。克隆完成后一定要进入仓库目录再执行LFS拉取cd ue5.3 git lfs pull这一步会拉所有的二进制资产体积很大耐心等。如果中途因为网络中断可以多次执行git lfs pull它会增量续传非常稳。3.2 运行Setup脚本下载第三方依赖库UE的仓库里放着一个Setup.sh脚本它的作用是自动检查和下载引擎运行所需的第三方库包括OpenCV、PhysX、Havok、libWebRTC等苹果家和微软家的闭源组件还有一些音频中间件。这个脚本是必跑的如果不跑后面生成Makefile链接阶段会报一堆找不到库的错误。执行前建议给脚本加权限chmod x Setup.sh ./Setup.sh这个脚本会先自动检测你已经安装的依赖然后挨个下载并解压到/Engine/Source/ThirdParty目录下。如果网络不好这个脚本执行时间会非常长我遇到过一次下载到一半卡住的现象。解决办法是把终端挂几天不现实我更推荐配一个代理或者换一个干净的网络重试。还有一个容易忽略的点Setup结束后脚本会提示你缺少一些包这时根据提示再补装。我自己就遇到过提示缺少libatomic1补装后重新执行一遍Setup就顺利过了。3.3 使用s和Build脚本生成工程与编译Setup完成后就开始构建引擎本体。UE的Linux构建方式通常有两种一种是用它自带的GenerateProjectFiles.sh生成Makefile另一种是直接用make去跑。这里我推荐后者逻辑更清晰。先执行./GenerateProjectFiles.sh -makefile该脚本会分析当前系统环境和UE的配置生成一套适合本平台的Makefile。执行过程中如果你用的是root账号它可能报错不允许以root编译这里建议用一个普通用户执行编译避免意外污染系统文件。接下来就是漫长编译阶段。进入某个生成目录后运行以下命令make -j$(nproc) 21 | tee build.log-j参数是并行编译的线程数我用的是8核心16线程-j16编译大概花了两小时。如果你内存只有16G建议-j8否则会内存耗尽导致编译进程被杀掉。编译时会刷出大量警告别慌正常现象。要留意的是error开头的行。如果你看到error: X11/Xlib.h等说明步骤2.3里有依赖没装全回去补装再重跑make即可。3.4 验证引擎安装是否成功构建完成后可以在引擎根目录下找启动脚本./Engine/Binaries/Linux/UnrealEditor如果路径正确会弹出一个登录窗口。首次启动需要联网验证然后进入编辑器主界面。这里需要注意麒麟系统如果没装好显卡驱动启动时可能会报OpenGL版本过低的错误这时候回退到软件渲染也能跑但性能很差。为了验证编译成果更好的方式是用一个空工程跑起来。UE自带了一些模板你也可以创建一个纯空白的C工程。假设你现在已经有一个工程可以用以下命令行启动编辑器并加载该工程./Engine/Binaries/Linux/UnrealEditor udk_project_name.uproject执行后看到蓝图编辑器和关卡视口正常渲染就说明引擎安装基本完成。接下来就该配置开发环境了。4. Vscode开发环境配置详解4.1 安装Vscode及C扩展Vscode在Linux上的安装方法很多麒麟V10的软件商店里可能也有我建议直接从官网下载deb包安装或者用仓库里的版本只要能用就行。安装完成后打开Vscode。接着装两个核心扩展C/C微软官方出品和C Intellisense后者是llvm-clang基于clangd的补全引擎对大型C项目性能更友好。在扩展商店搜索并安装ms-vscode.cpptools和llvm-vs-code-extensions.vscode-clangd。如果你要用调试功能还需要确认系统里有gdbsudo apt install -y gdb然后按CtrlShiftX打开扩展面板安装后重启Vscode。4.2 配置IntelliSense与代码提示UE5项目里的C代码经常依赖宏、反射系统、模块系统直接开箱会让编辑器看不明白需要你手动配置includePath和defines。最容易的方法是用compile_commands.json。UE5已经内置了-CMake生成方式但我更推荐直接用Build.sh生成编译信息。在你编译引擎或工程时如果使用VSCode的插件它通常会在Build/目录下找到相关文件。我这边通常是先把生成命令弄到一个文本文件里然后让VSCode读取。具体到Vscode的C插件手动创建一个.vscode/c_cpp_properties.json并填写如下结构{ configurations: [ { name: UE5, includePath: [ /path/to/UE5/Engine/Source/**, /path/to/UE5/Engine/Plugins/**, /path/to/your/Project/Source/** ], defines: [UE_BUILD_DEVELOPMENT1, WITH_EDITOR1, PLATFORM_LINUX1], compilerPath: /usr/bin/g, cStandard: c17, cppStandard: c20, intelliSenseMode: gcc-x64 } ] }这里要注意defines里面必须要定义UE_ISMONOLITHIC等宏否则很多源码跳转时会报找不到某个函数。Windows下常见的是WIN32, Linux下必须加上LINUX。如果你用clangd可以在工程根目录下运行bear -- make -j8这个工具能自动抓取编译参数并生成compile_commands.json然后clangd会读取它实现精准的代码补全和跳转。bear可以自己从源码编译也可以直接apt安装。4.3 配置编译任务tasks.jsonVscode的F5调试和CtrlShiftB编译任务是分开的。先配置编译任务让你按那个快捷键就能触发UE项目的编译。在.vscode/tasks.json里创建一个make任务也可以直接调用UE自带的编译脚本。我这里用的是直接围购引擎和工程的编译命令你可以参考以下配置{ version: 2.0.0, tasks: [ { label: Build UE5 Project, type: shell, command: /path/to/UE5/Engine/Build/BatchFiles/Linux/Build.sh, args: [YourProjectName, Development, Linux, -Project/path/to/YourProject.uproject], group: { kind: build, isDefault: true }, problemMatcher: [$gcc] } ] }Build.sh是UE官方提供的跨平台编译脚本它比直接make更贴近项目配置。这里要注意Linux下的ProblemMatcher建议用$gcc这样编译时的error: ...和warning: ...能被正确捕获并在“问题”面板中显示。如果你的项目没有C代码只有蓝图其实不需要编译任务但既然用了Vscode开发环境大概率还是要写C的。4.4 配置调试launch.json调试功能是Vscode最常用的部分。用CtrlShiftD打开调试面板创建launch.json然后配置gdb启动程序{ version: 0.2.0, configurations: [ { name: Debug UE5, type: cppdbg, request: launch, program: /path/to/UE5/Engine/Binaries/Linux/UE5Editor-Linux-DebugGame, args: [/path/to/YourProject.uproject], cwd: ${workspaceFolder}, environment: [], externalConsole: false, MIMode: gdb, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ], preLaunchTask: Build UE5 Project } ] }注意这里program路径要填你编译出来的可执行文件。Debug模式下可执行文件一般是UE5Editor-Linux-DebugGame开发构建则是UE5Editor-Linux-Development。不要搞混。连上断点后需要等启动过程进入编辑器再加载项目然后在C源码里打断点就能看到变量值了。整个过程第一次跑可能会慢因为要加载引擎资源。4.5 用最小工程验证环境为了确认整套配置没问题我通常会在Config/目录下新建一个简单的空白工程或者直接用UE自带模板创建一个C工程命名为TestProject。然后打开Vscode用CtrlShiftB执行编译确认正常生成引擎二进制没有红色错误。再按F5如果一切正常会看到编辑器启动并加载工程。此时在GameMode.cpp里打一个断点运行Play断点能命中的话整条链路就没问题了。这条验证路径一次通过你就能确定麒麟V10系统、UE5.3、Vscode三者已经完全融合。5. 常见问题与排查技巧实录搭建这套环境时不管是编译还是运行肯定绕不开那几个经典问题。下面把我在麒麟V10上实际踩过的坑和对应的排查思路全部列出可以直接当速查表用。症状原因解决办法编译时找不到X11/Xlib.h没装X11开发包sudo apt install -y libx11-dev libxt-dev链接时提示libtinfo.so.5缺失新版系统只装libtinfo.so.6装libtinfo5或做软链ln -s librtasp tinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5启动编辑器时OpenGL版本报错显卡驱动不适用或未加载确认/dev/dri存在重装mesa库如果还不行临时用软件渲染LIBGL_ALWAYS_SOFTWARE1运行 sudo make 报错Unreal引擎不允许root直接编译换普通用户执行make或者严格设置工程目录的所有权Setup.sh 下载第三方库永远失败网络受限或代理问题设置环境变量HTTP_PROXY和HTTPS_PROXY或切换到联动网络编译时内存不足被杀并发线程数过高降低-j参数比如从-j16降到-j8同时增加swapVscode代码补全不认UE类型缺少编译宏定义检查c_cpp_properties.json里的defines至少包含UE_BUILD_DEVELOPMENT1与WITH_EDITOR1调试时断点不断在C代码编译符号不完整或调试信息未生成确保用Development或DebugGame配置编译不要在Release下调试编辑器启动后白屏无内容显卡驱动或显示输出问题尝试从终端启动查看崩溃日志以及/root/.config/UnrealEngine下的日志文件下面两个问题单独展开说一下因为我是真在这里卡了很久。第一个是Setup.sh脚本切分支后报错。网络抖动时LFS对象不完整会导致后续GenerateProjectFiles失败。解决办法是重新运行git lfs pull如果还不行删除.git/lfs缓存再拉一次问题就解决了。第二个是Vscode插件和UE的类型系统冲突。如果不做任何配置代码里到处都是红色波浪线根本没法用。其主要原因是UE里大量使用UCLASS()、UPROPERTY()这种宏clang解析时如果不知道GENERATED_BODY()是什么就会报意料外的符号。因此我把.vscode/c_cpp_properties.json里的defines中加上了UE_BUILD_DEVELOPMENT和WITH_EDITOR红色波浪线几乎消失。如果你用clangd记得把--query-driver指向本机的g或者clang否则解析也会出错。还有一些不太起眼但很影响体验的小坑比如麒麟系统默认了桌面缩放然后Vscode的界面文字糊开可以在设置里换一个高分屏配置。另外编译UE5工程时如果工程路径里有中文目录会有排版问题把工程放到纯英文路径下就能避免。6. 一些优化建议和实战操作心得整个环境搭完我总结了几条个人觉得很好的优化经验。第一多个游戏工程共享同一份UE5源码。如果你有两个项目都要用UE5.3没必要每个项目编译一份引擎。在项目目录里的BuildSettings.json中指定引擎路径或者把UE5目录通过软链指向同一个引擎位置就行。这样节省了上百GB的硬盘空间同时也能保证两个项目调用的引擎完全一致。第二首次启动编辑器前建议预生成着色器缓存。在Linux里执行-compileShader可以提前编译好常用着色器不然第一次打开关卡会非常卡而且容易在编辑地形时崩溃。第三额外安装一个终端多路复用工具比如tmux或者screen因为编译引擎真的很耗时用tmux把编译任务挂后台出错后可以随时切回来继续看。这也是有效规避终端断线导致编译中断的好办法。第四建议在麒麟系统里写一个环境变量脚本把UE相关的几个路径都写进去比如引擎根目录工具目录甚至VULKAN_SDK以后开新终端也不会忘了配。我自己在~/.bashrc里加了类似export UE5_HOME/opt/UE5 export PATH$PATH:$UE5_HOME/Engine/Binaries/Linux第五用Vscode配置files.exclude把不用看的UE缓存目录比如Binaries/Intermediate/Saved过滤掉这样“资源管理器”只显示你的源码和配置。如果你用Git这一类目录也应该加到.gitignore里。第六如果内存不大建议在编译时临时加一个8GB的swap文件sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile编译完成后再考虑是否保留临时用比较香。最后再分享一个小技巧当Vscode的调试器无法命中断点时看一下底部输出面板的gdb日志有一种情况是断点所在源文件路径已经过时比如修改了源码目录但没重新编译。解决办法是直接删除Binaries/Intermediate/Saved/目录下的缓存文件然后重新编译一次断点就正常了。这招在很多公司内部项目里都管用比反复会检查配置要高效得多。