news 2026/11/4 14:14:04

银河麒麟离线安装QGIS:依赖搬运与本地软件源实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
银河麒麟离线安装QGIS:依赖搬运与本地软件源实战

简介:面向银河麒麟操作系统的QGis离线安装资源包,适用于政务内网、涉密机房等无外网环境下的地理信息系统部署场景,也供运维人员处理依赖关系与国产CPU(如飞腾)架构兼容问题时参考。包内共95个文件,以89个deb安装包为主,覆盖QGis主程序、python3-gdal、libqgis系列等核心依赖;另有2个sh脚本用于自动化安装与配置,1个txt离线安装说明、1个sig校验文件和1个tar.gz依赖归档,总大小358.59MB。目前已有1249人学习、下载。这份资源将安装过程中可能涉及的版本确认、软件包校验、依赖冲突处理、国产架构适配等关键环节提前整理,对照说明与脚本即可逐步完成部署,无需再逐一到网上寻找依赖包,能显著降低特殊网络环境下的部署门槛;同时可验证数据读取、图层叠加、空间分析等基础功能是否正常,适合银河麒麟系统维护者与GIS项目实施人员直接参考使用。

1. 银河麒麟上离线装 QGIS 卡在哪:先看清它的依赖规模

银河麒麟系统上离线安装 QGIS,很多人第一反应是去改软件源或者找离线安装包,结果折腾一圈才发现,真正难的不是 QGIS 这个主包,而是它背后的几十个依赖库。QGIS 是典型的 Qt 桌面应用,底层挂着 GDAL、GEOS、PROJ、QScintilla 这些专业库,任何一个版本对不上,程序都起不来。内网机器没有外网,apt 的在线解析能力就会全部失效,于是“离线装 QGIS”就变成了一个纯粹的依赖搬运问题:把在线的依赖树完整克隆下来,再以目标机可识别的方式喂给 dpkg 或 apt。这个问题如果解决不好,连启动 QGIS 都做不到,更别提做图层编辑和制图。这篇就围绕这条搬运链路展开,把选型、命令、踩坑和验证一次讲清楚,适合正在折腾国产化内网 GIS 装备的项目组。

2. 离线安装方案选型:为什么首选“搬 deb 包”而不是源码编译

2.1 银河麒麟是 Debian 系,先确认 apt/dpkg 这套底子

先说底层。银河麒麟 V10 的桌面版和服务器版都构建在 Debian 体系之上,所以包管理命令仍然是 apt-get / apt / dpkg 这一套。你在麒麟终端里敲 apt-get install 能用的软件源,都是 Debian 格式的软件源;下载下来的软件包也是标准的 .deb 文件。这带来的最大好处是:离线安装不需要什么特殊工具,只要有另一台同样架构、同样源体系的 Debian 系机器,就能把包一个个下载下来,搬到内网去。

这里特别提醒一点:不要因为银河麒麟的界面长得像某些国产系统,就以为它和那些基于 RPM 的系统一样。系统里有没有 dpkg 命令,决定了后续所有操作路径。可以用下面几条命令确认底子,同时顺手看一下 QGIS 在源里的状态:

cat /etc/os-release dpkg --print-architecture apt-cache policy qgis

第一条命令输出系统名称和版本;第二条命令输出 CPU 架构;第三条命令能看到软件源里是否有 qgis、候选版本是多少。如果apt-cache policy qgis输出的是 “N: Unable to locate package qgis”,就说明当前源里没有收录 QGIS,需要先把源换成麒麟官方源或合适的 Debian 源再继续。这一步看起来繁琐,但值得做,因为后续收集依赖的机器和目标机器的系统版本是否接近,直接决定了你会不会踩到后文说的版本冲突坑。

我一般会顺手记录这三个命令的输出,把它写到部署说明里。见过一些同事直接跳过检查,把一台 Ubuntu 机器当做依赖收集机,结果下载回来的库版本比目标机高,最后 dpkg -i 报错的时候,排查了半天也找不到原因。这个习惯不是多余,而是给后面的安装步骤买了份保险。

2.2 为什么不推荐源码编译 QGIS

QGIS 的源码编译,在联网机器上都不轻松,更不用说离线环境。它依赖的库包括 GDAL、GEOS、PROJ、Qt5、Python3、QScintilla、SIP 等,每个库又各自有一堆开发头文件和构建依赖。在离线机器上,光是把这些 devel 包凑齐,就要重走一遍我们现在要做的事。整个离线搬运依赖的过程一个不少,成本谈不上节省,出错面却更大。

而且编译阶段的报错往往很不直观。也许是编译器版本太高导致某个旧版库源码过不去,也许是某个头文件路径不对,也许是 Python3 和 Qt5 的绑定版本不匹配。我早些年给一个图像处理 Demo 做过一次 Qt 项目的离线编译,处理依赖的时间占了整个项目的一大半,最后运行阶段仍然冒出了新的问题。QGIS 的复杂度比那个 Demo 高得多,用到生产环境里,源码编译并不是一个工程上的好选择。除非你需要改 QGIS 源码本身,或者在某种特殊 CPU 平台上必须重新编译,否则老老实实装官方仓库里的 deb 是最稳的路线。

2.3 三条离线路线的选型对照

排除源码编译之后,剩下可行的路线其实可以压缩成三条:手动搬运 deb 包用 dpkg 装、搭一个本地 apt 软件源、用容器镜像整体迁移。它们各有适用场景,我先用一张表做对比,再说说我的取舍逻辑。

路线适用场景准备成本后续维护
手动搬运 deb + dpkg -i单台机器、一次性部署低差,缺依赖要手动补
本地内网 apt 软件源多台机器、重复部署中好,能自动解析依赖
容器镜像整体迁移内网机器允许容器运行时中高好,但依赖宿主系统一致

如果目标环境只有一两台离线机器,又急着用 QGIS 出图,手动搬运最快;如果是一个项目组里七八台机器都要装,后面可能还要装其他 GIS 工具,那建议直接把 deb 目录变成内网源。容器路线听起来干净,但在国产化环境的很多内网机器上根本没有容器运行时,能用的前提是你已经有了可用的 runtime,并且目标机器的内核和依赖库版本足够一致,否则镜像里调用的系统调用或显卡库照样翻车。

所以本文默认的主线是前两种,也就是“手动收集 deb → 本地软件源”的路径。它的前期成本只是多敲几条命令,但换来的是后续给任意一台麒麟机器装 QGIS 都不会再返工。我自己在某个跨平台系统交付时就是这么干的,一次建源,后面陆续装了五六台机器,没再碰过依赖问题。

3. 用 apt 在联网机器上递归收集 QGIS 依赖包:从 download-only 到完整脚本

3.1 第一步检查架构和软件源候选版本

收集依赖的前提,是有一台可以联网的 Debian 系机器。我建议先在这台机器上执行三个检查命令,确定它和目标机器的“身份”是否匹配:

cat /etc/os-release dpkg --print-architecture apt-cache policy qgis

这里要重点看架构。银河麒麟既有跑在 Intel/AMD 上的 x86_64 版本,也有跑在飞腾、鲲鹏上的 arm64 版本。dpkg --print-architecture输出amd64还是arm64,直接决定了后面下载的 deb 包是否能用。如果收集机是 x86,目标机是 ARM,那收集得再完整也白搭。

其次看apt-cache policy qgis输出的候选版本。不同的系统源里收录的 QGIS 版本可能差很多,有的是 3.10,有的是 3.22。版本新不代表必须追,生产环境我反而建议用和目标机同源同版本的包。如果你用 Ubuntu 最新源收集,拿到麒麟 V10 SP1 的目标机上装,版本冲突几乎是必然的。所以这一步不是走流程,是真的能省后面几小时的排错时间。

3.2 最快的方式:用 apt-get install --download-only 拉缓存目录

如果收集环境是一个刚装好的全新系统,或者是你临时启动的一个干净容器,最快的方式是让 apt 自己解析依赖并下载:

sudo apt-get clean sudo apt-get install --download-only -y qgis ls -l /var/cache/apt/archives/*.deb | wc -l

执行完之后,/var/cache/apt/archives下会有一批 .deb 文件,数量一般能达到几十个以上。这个方案的优点是快,apt 自己算清楚了依赖顺序;缺点也有,它只下载当前机器“还没安装”的包。如果这台收集机不是干净的,桌面上已经带了一堆 Qt 库,那么这些库不会被下载下来,而目标机如果偏偏缺它们,安装就会失败。

所以我用它只有两个前提:一是收集机是新建的临时环境,二是目标机的软件环境我确认过不缺基础组件。否则我还是会用下面这种递归解析的方式,买一个确定性。

3.3 最稳的方式:递归解析依赖的收集脚本

递归收集的原理很简单:用apt-cache depends --recurse把 QGIS 的依赖树展开,得到一长串包名,然后逐个apt-get download下载。我把这个流程写成了脚本,放在联网机器上执行,输出目录就是你要搬到内网的完整 deb 集。

#!/bin/bash # collect_qgis_deps.sh # 在联网的 Debian / 银河麒麟机器上运行 # 用途:把 qgis 及其全部依赖的 .deb 下载到 ~/qgis-debs 目录 PKG=qgis OUT=~/qgis-debs mkdir -p "$OUT" cd "$OUT" || exit 1 # 递归展开依赖,只看 Depends 和 PreDepends,忽略 Recommends/Suggests # 注意保留了 |Depends: 这种可选依赖行,宁可多下,不能少下 deps=$(apt-cache depends --recurse --no-recommends --no-suggests \ --no-conflicts --no-breaks --no-replaces --no-enhances "$PKG" \ | grep 'Depends: ' \ | awk '{print $2}' \ | sed 's/:.*//g' \ | sort -u) # 把 qgis 本身也加进去 deps="$deps $PKG" deps=$(echo "$deps" | tr ' ' '\n' | sort -u) # 逐个下载,失败的就记录到 missing.txt for p in $deps; do if ! apt-get download "$p" 2>/dev/null; then echo "$p" >> missing.txt fi done echo "下载结束,共 $(ls *.deb | wc -l) 个 deb 包" echo "如果存在 missing.txt,请打开查看哪些包没有下载到"

这个脚本有几个关键点要说清楚。--recurse会把依赖一点点往外扩,比如 qgis 依赖 qgis-providers,qgis-providers 又依赖 libqgis-core,这样一层层展开,直到铺满整棵依赖树。--no-recommends是为了不把推荐包全拉下来,否则 deb 数量会膨胀近一半,很多推荐包装上根本用不到。sed 's/:.*//g'是去掉包名后面的:amd64这样的架构后缀,因为apt-cache depends输出时经常带这个后缀,直接作为包名传给apt-get download会报找不到包。

跑完脚本后,missing.txt里可能会有内容。不要慌,这里面有两种情况:一种是真的缺失,比如源里没有启用某个组件;另一种是虚拟包,本身没有独立 deb 文件,只有依赖它的包才会被安装。我的习惯是打开 missing.txt 逐个人工过一遍,用apt-cache policy 包名看看它是真实包还是虚拟包,再决定要不要补。比如python3-pyqt5这类元包,它确实没有自己的 deb 内容,可以忽略;如果libqt5gui5出现在里面,说明源有问题,需要检查软件源组件。

3.4 拷贝到目标机并执行 dpkg 安装

收集完成后,把整个~/qgis-debs目录拷到 U 盘或内网共享目录,然后到离线目标机上执行:

# 在离线银河麒麟目标机上执行 sudo mkdir -p /opt/qgis-debs sudo cp -a /mnt/usb/qgis-debs/* /opt/qgis-debs/ cd /opt/qgis-debs # 第一次安装:能装的先装,依赖未就绪的会处于半配置状态 sudo dpkg -i *.deb # 第二次执行:把上一轮没配完的包继续配置完成 sudo dpkg -i *.deb # 最后刷新共享库缓存 sudo ldconfig

dpkg -i执行两遍不是玄学,而是因为这批 deb 之间的依赖顺序不一定符合一次安装的排列顺序。第一遍 dpkg 会把能装的都装上,那些因为依赖还没就绪而失败的包会处于“半配置”状态;第二遍执行时,它们依赖的包已经就绪,dpkg 会继续完成配置。如果两遍之后仍报缺少依赖,就对照 missing.txt 和报错信息回到联网机器补充下载,再拷回来重试。

ldconfig也不要省略。QGIS 运行时要读取大量共享库,比如 libqgis_core.so 和 libqgis_gui.so,如果系统没有刷新动态链接器缓存,启动时可能提示找不到共享库文件,但包明明已经装好。这一步花不了几秒钟,却能避免一个非常容易误判的启动故障。

另外要提醒的是,别在离线机器上用apt-get install ./qgis-*.deb代替 dpkg -i。apt-get 解析依赖时会尝试访问网络源,在内网环境里一旦连不上就报错中断,反而把 dpkg 可以直接完成的安装复杂化了。

4. 银河麒麟离线装 QGIS 的避坑手册:5 个常见问题的现象与排查

4.1 依赖总是不齐:Depends 之外还有 Recommends

现象:sudo dpkg -i *.deb执行后报了一堆depends on缺失提示,但打开目录看,相关的包明明也在里面。

原因:很多运行期需要的库在 deb 里是 Recommends(推荐)级别,不是 Depends(必需)级别。我给的收集脚本里特意用了--no-recommends,就是要把这部分包挡在门外,但这也带来一个副作用:QGIS 的某些功能模块运行时需要这些推荐库,缺了之后功能会静默失败甚至闪退。

解决:分两步走。第一步,先把qgis-providers、qgis-server-common、libqt5sql5-sqlite、python3-pyqt5.qtsvg、qt5-image-formats-plugins这几个常见运行辅助包手动加进收集列表;第二步,安装时如果还有缺失,直接把报错信息里的包名拿到联网机器上apt-get download补下,拷回来再装。宁可多带几个包,也别为省几百兆 U 盘空间在目标机上折腾一夜。

4.2 用错源导致版本不满足

现象:内网机器执行 dpkg 时提示Depends: libgdal.so.30,但系统里已经装了libgdal.so.29,或者提示某个库版本低于预期,dpkg 直接拒绝安装。

原因:这是典型的收集机源与目标机源不一致。收集机用的是 Ubuntu 源或 Debian 官方源,目标机的银河麒麟用的是自家仓库编译的库版本,两边对同一个库的 ABI 版本号对不上。只看包同名没有用,底层 C++ 库的版本一旦不一致,QGIS 运行时就可能加载了错误版本的符号。

解决:收集依赖之前,对比两台机器的/etc/os-release。如果目标机是麒麟 V10 SP1,收集机最好也是同版本麒麟,或者至少是版本接近的 Debian。如果手头只有 Ubuntu 机器,那就把麒麟官方源加到这台 Ubuntu 机器上,用麒麟源里的包版本去收集。这里没有捷径,版本不一致的问题后面几乎没得商量。

4.3 x86 和 ARM 架构混用

现象:dpkg 报错package architecture (amd64) does not match system (arm64),或者反过来。

原因:把 U 盘里的 deb 包复制到目标机时没区分架构。银河麒麟跑在 Intel/AMD 和飞腾、鲲鹏上,同一系列系统的 CPU 架构完全不同。收集机是 x86 的,目标机是 ARM 的,包搬过去完全不能用。

解决:收集前先dpkg --print-architecture,确认两边一致。如果项目里既有 x86 机器又有 ARM 机器,我建议给 deb 目录命名时就带上架构,比如qgis-debs-amd64和qgis-debs-arm64,每台机器只复制对应架构的那一份。名字看着多此一举,但能防止维护时拿错包。

4.4 dpkg 中断导致后续安装报 “dpkg frontend is locked”

现象:安装过程中被 Ctrl+C 打断,再执行 dpkg 命令时提示dpkg: error: dpkg frontend is locked by another process,安装完全进行不下去。

原因:上次安装进程被打断后,dpkg 数据库里有残留的锁和未完成事务,新的 dpkg 进程检测到锁就拒绝执行。

解决:先确认没有残留的包管理进程,然后执行修复:

sudo fuser -v /var/lib/dpkg/lock-frontend sudo fuser -v /var/lib/dpkg/lock

如果输出显示 PID,确认这些进程确实已经不是当前安装任务了,再执行sudo dpkg --configure -a把未配置的包修复完,然后重新运行sudo dpkg -i *.deb。注意不要一上来就把 lock 文件删掉,如果还有进程在写数据库,删锁只会把状态弄得更乱。这个坑我踩过一次之后,就养成了安装期间不轻易快捷键打断的习惯,也让项目组里的同事尽量不要在传输大 U 盘时中途拔盘。

4.5 Qt 平台插件缺失导致 QGIS 起不来

现象:所有依赖都装完了,执行qgis却直接退出,终端提示Failed to load platform plugin "xcb",而且没有其他更明确的报错。

原因:QGIS 是 Qt 程序,启动时要加载 xcb 平台插件才能连接图形界面。这个插件不在 QGIS 的直接依赖里,属于运行时按需加载,dpkg 检查依赖时不会强制安装它。麒麟桌面版一般自带 Qt 基础环境,但如果你在一个精简的服务器版上装 QGIS,缺这个插件就很常见。

解决:用 Qt 的调试模式启动一次,看看它到底在找哪个文件:

QT_DEBUG_PLUGINS=1 qgis 2>&1 | head -n 30

输出里会列出搜索路径和缺失项,通常补装qt5-qpa-plugins、libqt5gui5和相关的libxcb-*库就能解决。如果是在没有图形桌面的服务器上跑,还要确认有没有配置 X 转发或 Wayland 环境,否则补再多 Qt 插件也无法在纯命令行环境里启动 GUI。

5. 把 deb 目录变成内网 apt 软件源:一次配置反复部署

5.1 为什么多台机器部署时别再依赖 dpkg -i

dpkg -i 在单机部署时够用,但一旦目标机器多了,问题就很明显:安装顺序靠人工反复执行,缺了依赖要回到联网机器补包,每一台机器都要重复同样的手工过程。如果你要在一个项目组里部署七八台离线机器,用 dpkg 逐台装 QGIS 是很痛苦的。

把 deb 目录变成一个内网 apt 源之后,事情就简单了。目标机像在线环境一样执行apt-get install qgis,apt 会读取本地源里的依赖关系,自动决定安装顺序,缺什么它自己去源里找。本质上,我们只是把“软件源地址”从互联网换成了本机或内网的一个目录,剩下的工作交给 apt 自己完成。

5.2 在目标机上生成 Packages 索引

建源的核心动作是为 deb 目录生成一个 Packages 索引文件。这个索引记录了目录里有哪些包、版本是多少、依赖什么,apt 正是靠它识别一个目录是不是合格的软件源。命令如下:

sudo mkdir -p /opt/offline-repo sudo cp /opt/qgis-debs/*.deb /opt/offline-repo/ cd /opt/offline-repo # 生成索引,需要 dpkg-dev 提供 dpkg-scanpackages sudo dpkg-scanpackages ./ | gzip > Packages.gz ls -l Packages.gz

dpkg-scanpackages来自 dpkg-dev 包,如果目标机没有装,可以在联网收集阶段把dpkg-dev也加入下载列表。更省事的办法是在联网机器上生成好 Packages.gz,随 deb 目录一起拷到目标机。这样目标机不需要装额外工具,只要目录里有 Packages.gz 就能被 apt 识别。

这里有个细节值得注意:dpkg-scanpackages 的输出会写到标准输出,直接重定向到 gzip 压缩成 Packages.gz,apt 读取源时会自动解压。如果目录里存在重复版本的同名包,可以加-m参数忽略重复,但在本文的流程里一般不会出现,因为收集脚本已经用 sort -u 去重过。

5.3 添加本地软件源并安装 QGIS

索引生成完毕后,在目标机上建立软源配置并执行安装:

echo "deb [trusted=yes] file:///opt/offline-repo ./" | sudo tee /etc/apt/sources.list.d/offline.list sudo apt-get update sudo apt-get install qgis

这条配置里,[trusted=yes]是必须的,因为本地源没有 GPG 签名,不加这个选项,apt-get update 之后会把整个源标记为不可信并跳过,到时候 apt-get install 还是会报找不到 qgis。末尾的./是固定写法,它告诉 apt 到这个目录的根下去找 Packages 或 Packages.gz。

安装过程中如果提示缺少依赖,不要重复之前的坑,回到联网机器的收集目录里把缺的包补进/opt/offline-repo,重新执行dpkg-scanpackages和apt-get update,再执行一次apt-get install qgis即可。这套流程比 dpkg -i 更可维护,因为它把依赖解析交给 apt,不再依赖人工调整安装顺序。

5.4 多台机器复用和版本快照

本地源建好后,整个/opt/offline-repo目录就是一个完整的离线性源。要给新机器装 QGIS,只需要把这个目录原样复制过去,然后写入同样的源配置,执行apt-get update && apt-get install qgis,其他机器就能装出与第一台完全相同的环境。

我建议每次做完一轮离线交付,就把 deb 目录和 Packages.gz 打包成一个 tar 文件保存下来,命名时带上日期、架构和 QGIS 版本信息。下次无论是补装、重装还是给新机器部署,都不需要重新上网收集依赖。这个习惯坚持下来之后,项目的离线部署环境基本就成为了一套可复用的资产,不再依赖某个人临时去查命令。

6. 装完不能叫完成:验证 QGIS 可用性的几个实用动作

6.1 用 qgis --version 和 qgis_process 做命令级验证

安装全部走完,先做命令级验证。打开终端,执行qgis --version,能正常打印出版本信息,说明核心库加载成功,至少程序主体是可用的。如果这一步就提示找不到共享库,优先检查ldconfig是否执行过,再看缺的具体库名,补装对应 deb。

接着用qgis_process验证插件引擎。这个命令是 QGIS 自带的命令行处理工具,用来调用 QGIS 的算法。如果它在 PATH 里,直接执行qgis_process plugins或qgis_process --help,能列出插件或帮助信息,说明 Python 环境和插件系统基本正常。如果命令不在 PATH,可以用find /usr -name qgis_process找到它的位置再执行。

这一步的价值在于,它能快速暴露出“安装成功但运行库有缺陷”的问题,不需要打开图形界面试错。命令行环境通常比 GUI 更早暴露问题,也更容易定位原因。

6.2 用真实数据跑一次空间处理,再打交付快照

命令级验证通过之后,我还会用一份真实的小数据做一次空间处理测试。随便准备一个本地的 GeoJSON 或 Shapefile,启动 QGIS,加载图层,执行一次裁剪或投影转换,导出结果文件。如果能顺利走完“加载 → 处理 → 导出”,说明 GDAL、PROJ 这些底层空间库都工作正常,QGIS 的制图和空间分析链路没有大问题。

这一步不能省。以前在某项目组帮同事排查一台离线机器,所有命令测试都通过了,但一打开矢量图层就闪退,最后发现是libgdal的某一个小版本补丁缺失导致驱动加载失败。用真实数据跑一遍,相当于把那些在命令层测不到的动态加载路径也验证了。

最后把离线源目录、源配置、验证命令和这一次用的 deb 清单写进部署说明,标记好架构和系统版本。这样下个月再来一台新机器,不需要重新想流程,直接把备份目录复制过去,跑一遍 apt 命令就能交差。我现在每次交付前都会先在隔离的虚拟机上完整装一遍,确认验证通过后才去动真机。这套流程走下来,离线环境里“装不上”、“起不来”的意外已经很少碰见了。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 14:14:04

产品经理大概要会的东西2

内容来源:哔哩哔哩黑马程序员 文章目录01.产品功能结构图02.产品信息结构图和产品结构图03.产品结构图制作案例04.结构图和原型的关系05.Axure常用软件106.Axure常用元件207.Axure常用交互08.元件库和母版09.常见的原型规范10.页面流程图、泳道图01.产品功能结构图 …

作者头像 李华
网站建设 2026/11/4 6:03:44

免费IP库选型与接入全解析:离线、在线、自建方案实测

最近在做一个新项目时,遇到一个特别基础但绕不开的需求:要按用户注册时的IP,返回省、市、运营商信息,用于风险控制和分区域的运营活动。第一反应是找个现成的在线接口调一下,结果看了一圈报价,商用授权、按…

作者头像 李华
网站建设 2026/10/26 7:24:21

AI编程代理工程化:记忆、代码地图与token记账开源工具链

如果你正在给 AI 编程代理打地基,而不是天天调 prompt,你应该能秒懂我说的痛点:上下文一长,代理就开始选择性失忆,代码库稍微大一点它就像第一次进迷宫,月底一看 token 账单,消耗比云服务器还吓…

作者头像 李华
网站建设 2026/10/26 4:45:22

小鹏与产业链出海:大客户销售怎么跟住客户的决策任务

行业热度会过去,客户内部的采购任务不会。小鹏出现在产业链出海这条主线上,值得当成一道阶段判断题来做。 东方财富的这条报道,主题是汽车出海从产品出海迈向产业链出海,绑定的主体是小鹏。报道没有给出对方、金额和时间节点&…

作者头像 李华
网站建设 2026/10/25 17:37:47

Vulkan渲染器集成光照与材质系统实践

做Vulkan渲染器的人,大多都会在同一个地方卡壳:几何体画出来了,摄像机能转了,但画面灰扑扑一片,像个石膏模型,完全没有“引擎”该有的样子。标题里这个 “Lighting & Materials Vulkan integration” 正…

作者头像 李华
网站建设 2026/10/26 2:54:50

从自然语言到最优方案:构建稳定的优化求解闭环系统

这个系列写到第8篇,终于到了最激动人也最折磨人的阶段:把前几篇零散搭好的解析、建模、求解、解释模块串成一条完整的流水线,让系统真正达成“用户说人话,系统出方案”的闭环。前几篇解决的是环境、大模型接口、求解器接入和基础提…

作者头像 李华