简介:围绕 DeepSeek 多平台部署整理的实操型文档,面向希望在本地电脑、手机端与图形化界面中运行大模型的技术爱好者、开发者和自学者,帮助其根据硬件条件与使用习惯选择合适路径,降低环境搭建与模型启动门槛。压缩包仅含 1 个 docx 文件,大小约 15KB,篇幅紧凑,便于快速检索与对照操作。已有 767 人学习关注。内容覆盖 Ollama 在 macOS、Linux、Windows 上的安装、模型拉取与终端交互,iPhone 快捷指令的安装、API Key 配置与首次运行,Android 借助 Termux 配置依赖、编译 Ollama、启动服务并验证接口、下载运行 DeepSeek-R1,以及通过 Open WebUI 结合 Docker Desktop 完成图形化部署与模型选择。文档将关键命令、操作顺序和验证方式集中呈现,可作为跨平台部署时的速查手册与排错参考。
1. 先别急着敲 ollama run:DeepSeek 多平台部署的版本分叉
DeepSeek 多平台部署这件事,真正让人翻车的往往不是模型本身,而是你换到 Windows、Linux、Docker 或手机上时,端口、模型标签、权限全变了。机器学习 AI 模型部署最常见的场面,是桌面端ollama run能跑,换到容器里 Open WebUI 看不到模型,或者手机端快捷指令一直提示未授权。这套环境适合想在本机、容器和手机端各跑一遍 DeepSeek 的开发者,也适合已经把 Ollama 装上、但卡在服务化和跨端访问的人。先把版本分叉想清楚,后面每一步才不至于靠试。
2. Ollama 本地部署:从安装到 deepseek-r1:7b 首次跑通
Ollama 是这套多平台部署里最稳的起点。它把模型下载、权重加载和本地 API 服务包在一起,桌面端装完就能用,后面 Open WebUI 和手机端也都要靠它的 11434 端口。先把本机这一层跑通,再去碰 Docker 和 Termux,排错范围会小很多。下面按安装、拉模型、服务化、探活四步走,每一步都给可抄的命令。
2.1 装 Ollama:Windows、macOS、Linux 三套落点
Windows 和 macOS 用图形安装包最省事,装完在 PowerShell 或终端里执行ollama --version,能输出版本号就说明 PATH 已经生效。Linux 常见做法是走安装脚本,脚本会把 Ollama 写成 systemd 服务,后面改监听地址和模型目录都方便。macOS 如果已经用 Homebrew 管理命令行工具,也可以走包管理器,但装完同样要用版本命令确认,不要凭图标判断。
# Linux:安装脚本会落地可执行文件并注册 systemd 服务 curl -fsSL https://ollama.com/install.sh | sh # macOS 已装 Homebrew 时可以用包管理器 brew install ollama # 三个系统装完都先验证命令是否可用 ollama --version这段命令里,Linux 脚本需要能写系统目录,普通用户执行时脚本内部会处理权限;如果机器上已经有旧版 Ollama,先停掉旧服务再装,避免两个可执行文件抢同一个 11434 端口。brew install ollama只负责装命令行入口,不会自动帮你拉模型。ollama --version是后面所有步骤的基线,版本太旧时pull和run的标签行为可能不一致,遇到模型拉不下来先升级再试。
Windows 用户装完建议重开一次 PowerShell,让环境变量刷新。macOS 如果提示命令找不到,先看/usr/local/bin或 Homebrew 的 bin 目录有没有进 PATH。Linux 装完后systemctl status ollama应该能看到服务,如果服务没起来,先看/var/log或journalctl -u ollama,不要急着拉模型。
2.2 拉取 deepseek-r1:7b 与模型标签选择
Ollama 的模型名是「模型:标签」的形式,deepseek-r1:7b里的7b就是参数量档位。第一次执行run会自动下载权重,下载完成后直接进交互模式;如果只想先下好、不马上对话,用pull更干净。拉完一定用ollama list看一眼本地标签,确认没有把 7B 和 8B 搞混,后面写配置和容器环境变量时都要用这个标签。
# 先拉取 7B 标签,首次会下载权重到模型目录 ollama pull deepseek-r1:7b # 查看本地模型清单,确认模型名和标签 ollama list # 进入交互式对话,首次加载会慢一些 ollama run deepseek-r1:7bpull只负责把模型落到本地,不启动对话;run在模型不存在时会先拉再跑,适合第一次快速验证。ollama list输出的第一列是模型名,第二列是 ID,第三列是大小,第四列是修改时间,后面在 Open WebUI 里选模型时认的就是第一列。如果提示模型不存在,先确认标签有没有写错,deepseekr1:8b这种连写标签在不同版本里不一定等价,按ollama list和模型库实际给出的标签为准。
7B 和 8B 在手机端和低配机器上的体验差别很明显,7B 更适合先跑通流程,8B 放在 Termux 里更多是验证「能装起来」,不要期待交互速度。模型下载占磁盘,默认落在用户目录下的.ollama/models,如果系统盘小,下一节就把模型目录挪走。
2.3 服务化配置:OLLAMA_HOST、OLLAMA_MODELS 与开机自启
本地能对话不等于服务可用。Open WebUI 容器和手机端都要通过 HTTP 访问 Ollama,所以要把服务监听地址从默认的本机回环改成可被本机网卡访问,同时把模型目录放到空间更大的盘。Linux 用户级 systemd 配置最直观,Windows 用用户环境变量,macOS 用launchctl或图形启动项都可以,核心是那两个环境变量。
# Linux 用户级 systemd 配置目录 mkdir -p ~/.config/systemd/user cat > ~/.config/systemd/user/ollama.service <<'EOF' [Unit] Description=Ollama Service After=network-online.target [Service] # 监听所有本机网卡,容器和手机才能访问;不要直接暴露到公网 Environment="OLLAMA_HOST=0.0.0.0:11434" # 模型权重放到空间更大的数据盘 Environment="OLLAMA_MODELS=/data/ollama/models" ExecStart=/usr/local/bin/ollama serve Restart=always RestartSec=3 [Install] WantedBy=default.target EOF systemctl --user daemon-reload systemctl --user enable --now ollama systemctl --user status ollamaOLLAMA_HOST=0.0.0.0:11434表示监听所有本机网卡,局域网里的手机和 Docker 容器才能连过来;如果只写127.0.0.1:11434,容器里的host.docker.internal也未必能通。OLLAMA_MODELS指向新目录前要先建好目录并给当前用户写权限,否则服务启动会报权限错误。ExecStart的路径用which ollama的实际结果替换,不同安装方式可能落在/usr/local/bin或/usr/bin。Restart=always让服务异常退出后自动拉起,RestartSec=3避免频繁重启刷日志。
注意:
0.0.0.0只适合本机或可信局域网,不要把 11434 直接映射到公网,模型服务没有内置账号体系。
Windows 用 PowerShell 设置用户级环境变量,改完必须重开终端:
# Windows 用户级环境变量,改完重开 PowerShell 才生效 [Environment]::SetEnvironmentVariable("OLLAMA_HOST","0.0.0.0:11434","User") [Environment]::SetEnvironmentVariable("OLLAMA_MODELS","D:\ollama\models","User") # 重开终端后确认变量和版本 echo $env:OLLAMA_HOST ollama --versionSetEnvironmentVariable的第三个参数User表示只影响当前用户,不用管理员权限;如果写成Machine会影响整台机器,多人共用时谨慎。模型目录不要设在需要管理员权限的根目录下,Ollama 进程写不进去时只会在日志里报错,页面上看起来就是模型拉取失败。设置完用echo $env:OLLAMA_HOST确认,没输出就说明终端还没刷新。
2.4 首次交互与 API 探活
服务起来后不要直接开 Open WebUI,先用curl打两个接口:/api/version看服务是否活着,/api/tags看模型列表是否可读。再用/api/generate发一条最小请求,确认模型能加载、能返回。这一步是后面容器和手机端排错的基准,本机 API 不通,容器里一定不通。
# 探活:返回版本信息说明 11434 已监听 curl -s http://127.0.0.1:11434/api/version # 查看服务端能识别的模型列表 curl -s http://127.0.0.1:11434/api/tags # 发一条最小生成请求,stream=false 方便看完整 JSON curl -s http://127.0.0.1:11434/api/generate \ -d '{"model":"deepseek-r1:7b","prompt":"只回答 OK","stream":false}'/api/version不依赖模型,适合判断进程和端口;/api/tags依赖模型目录,返回空列表说明模型没落到当前OLLAMA_MODELS指向的位置。/api/generate里的model必须和ollama list第一列完全一致,stream设为false时一次性返回完整 JSON,适合脚本判断;设为true会流式返回,终端里看起来像逐字输出。第一次请求会触发模型加载,等几秒很正常,超时先看服务日志,不要反复重启。
3. 模型参数与硬件取舍:7B、8B 和量化标签怎么落到配置里
Ollama 装通之后,下一步不是急着上手机,而是把模型规模、上下文长度和并发参数定下来。AI 模型部署在单机上最容易犯的错,是把 7B 和 8B 当成「差不多」,结果内存不够时服务直接被杀,或者上下文一开大响应慢到没法用。这一章把硬件账、标签含义和几个关键环境变量拆开,最后用一个 Modelfile 把参数固化,避免每次对话都靠手调。
3.1 7B 与 8B 的硬件账
7B 和 8B 都是参数量档位,不是文件大小。量化后的权重会小一些,但加载时还要留出上下文和运行时内存。桌面端 16GB 内存跑 7B 比较稳,8GB 内存能启动但多开几个请求就容易吃紧;手机端 8B 更多是验证编译和拉取流程,实际对话速度受 CPU 和散热限制。下面这张表是经验起点,不是硬门槛,真实占用用ollama ps和系统监控看。
| 档位 | 内存起点 | 适用场景 | 注意 |
|---|---|---|---|
| deepseek-r1:7b | 8GB 起,16GB 更稳 | 本机对话、Open WebUI 单用户 | 上下文开大后内存上涨 |
| deepseek-r1:8b | 12GB 起 | 桌面端验证、Termux 编译验证 | 手机端别开多并发 |
| 量化标签 | 看ollama show | 磁盘紧张时优先选小体积 | 标签不同,效果有差异 |
如果机器同时跑 Docker Desktop、浏览器和 Open WebUI,内存要再留 2GB 到 4GB 给系统和容器。Windows 和 macOS 的 Docker Desktop 默认资源限制比较保守,Open WebUI 能打开但模型加载失败时,先看 Docker 分配的内存,不要只怀疑模型标签。
3.2 模型标签、量化与磁盘占用
deepseek-r1:7b只是标签,具体量化格式和上下文窗口要用ollama show看。模型目录占磁盘很快,7B 和 8B 各拉一份就是双份权重,拉之前先看剩余空间。把OLLAMA_MODELS指到数据盘之后,du也要看新目录,不要看旧的~/.ollama/models。
# 查看模型参数、量化格式和上下文窗口 ollama show deepseek-r1:7b # 查看当前模型目录占用 du -sh /data/ollama/models # 查看正在加载的模型和占用 ollama psollama show会列出 architecture、parameters、quantization 等信息,量化格式决定权重大小,parameters 里的num_ctx是默认上下文窗口。du -sh看的是目录总占用,模型多时用du -sh /data/ollama/models/*逐个看。ollama ps能看到当前加载了哪些模型、占用多少内存,对话变慢时先看这里,不要盲目重启服务。
如果磁盘只剩几 GB,不要同时保留 7B 和 8B 的多个标签。先ollama list确认哪些是临时验证用的,再决定删不删;删除用ollama rm 模型名,删之前确认没有容器或脚本还在引用。
3.3 环境变量参数表
Ollama 的并发、保活和模型目录都靠环境变量控制。单用户本机部署不需要把并发开大,OLLAMA_NUM_PARALLEL=1反而更稳;OLLAMA_KEEP_ALIVE控制模型加载后多久卸载,设得太短会频繁冷启动,设得太长会一直占内存。下面这张表是常用起点,改完要重启服务。
| 变量 | 作用 | 建议起点 | 注意 |
|---|---|---|---|
| OLLAMA_HOST | 监听地址和端口 | 0.0.0.0:11434 | 只开可信局域网 |
| OLLAMA_MODELS | 模型权重目录 | 数据盘路径 | 先建目录给权限 |
| OLLAMA_KEEP_ALIVE | 模型保活时间 | 30m | 内存紧张时调短 |
| OLLAMA_NUM_PARALLEL | 并行请求数 | 1 | 手机端不要调高 |
| OLLAMA_MAX_LOADED_MODELS | 同时加载模型数 | 1 | 多模型切换会变慢 |
Linux 用户级服务用 override 文件追加,不要直接改主 unit,升级时不容易被覆盖:
# 给 ollama.service 追加保活和并发配置 mkdir -p ~/.config/systemd/user/ollama.service.d cat > ~/.config/systemd/user/ollama.service.d/override.conf <<'EOF' [Service] Environment="OLLAMA_KEEP_ALIVE=30m" Environment="OLLAMA_NUM_PARALLEL=1" Environment="OLLAMA_MAX_LOADED_MODELS=1" EOF systemctl --user daemon-reload systemctl --user restart ollama systemctl --user show ollama -p Environmentoverride.conf只写要覆盖的字段,Environment可以多行追加;daemon-reload让 systemd 重新读配置,restart让环境变量生效。systemctl --user show ollama -p Environment用来确认变量真的进去了,没显示就检查文件名和目录层级。OLLAMA_KEEP_ALIVE=30m表示模型加载后保留 30 分钟,内存紧张时改成5m,需要快速响应时再调大。
3.4 用 Modelfile 固化参数
环境变量管服务,Modelfile 管单个模型的默认参数。把上下文、生成长度和温度写进 Modelfile,后面 Open WebUI 和手机端调用同一个模型名时行为更一致。不要直接把基础模型改坏,用FROM派生一个新名字,验证完再决定要不要长期用。
FROM deepseek-r1:7b # 控制上下文窗口,数值越大越吃内存 PARAMETER num_ctx 8192 # 控制单次生成长度,避免一次吐太多 PARAMETER num_predict 512 # 降低随机性,做配置验证时更稳定 PARAMETER temperature 0.3# 用当前目录的 Modelfile 创建派生模型 ollama create deepseek-r1-7b-lab -f Modelfile # 确认新模型出现在列表里 ollama list # 用新模型名跑一条最短验证 ollama run deepseek-r1-7b-lab "只回答 OK"FROM指定基础模型,派生模型不会复制一份完整权重,而是复用底层文件;num_ctx是上下文窗口,8192 对 7B 是常见起点,内存不够就降到 4096;num_predict限制单次生成 token 数,做接口验证时设小一点能更快返回;temperature越低输出越稳定,排查配置问题时更好判断。ollama create的-f指定文件名,模型名自己定,但后面容器和手机端要统一用这个名字。派生模型删掉用ollama rm deepseek-r1-7b-lab,不影响基础模型。
4. 手机端部署:iPhone 快捷指令与 Android Termux 编译 Ollama
手机端是这套部署里最容易「看起来装好了、实际跑不通」的一段。iPhone 走快捷指令,核心是 API Key 和网络授权;Android 走 Termux,核心是依赖包和编译。两条路都不建议一上来就拉大模型,先用最小请求确认链路,再考虑 8B。下面把两条路分开写,配置项和命令都按可复现的粒度给。
4.1 iPhone 快捷指令:导入、Key 与首次授权
快捷指令的安装包导入系统后,重点是填对 API Key 和服务地址。Key 不要带前后空格,服务地址不要以多余斜杠结尾,模型名要和服端实际暴露的名字一致。首次运行会弹网络访问和快捷指令权限,全部允许后再发请求。下面这张表是常见字段的填法,不同快捷指令的变量名可能不同,按实际字段对应。
| 字段 | 填什么 | 常见错误 |
|---|---|---|
| API Key | 服务端发放的 Key | 复制时带空格或换行 |
| 服务地址 | 实际 API 根地址 | 末尾多斜杠、协议写错 |
| 模型名 | 服务端映射的模型名 | 大小写或标签不一致 |
| 超时 | 30 到 60 秒 | 太短,首次加载直接失败 |
先用curl在电脑上验证同一个 Key 和地址,能返回再回手机填。下面是一个 OpenAI 兼容接口的验证示例,路径和请求体按你实际服务端调整;如果服务端直接暴露 Ollama 原生 API,路径要换成/api/generate或/api/chat。
# 在电脑上先验证 Key、地址和模型名,再去快捷指令里填 curl -s -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-r1:7b","messages":[{"role":"user","content":"只回答 OK"}]}' \ http://你的服务地址/v1/chat/completionsAuthorization头里的Bearer后面跟 Key,Key 建议用环境变量传入,不要直接写在命令历史里;model必须和服务端接受的名称一致,Ollama 原生接口和 OpenAI 兼容接口的字段不同,返回 404 先看路径。首次运行快捷指令时,系统会问是否允许访问网络,选允许;如果点了不允许,后面不会再次弹窗,需要到快捷指令设置里手动改权限。
提示:快捷指令里的 Key 属于敏感信息,不要把填好 Key 的快捷指令截图或导出给他人。
4.2 Android Termux 准备:存储权限和依赖包
Termux 装好后先给存储权限,再更新包索引,然后装编译依赖。输入里的termuxsetupstorage是连写形式,实际命令是termux-setup-storage;libjpegturbo的包名常见写法是libjpeg-turbo。包名以pkg search的结果为准,不同源里命名可能有差异。编译 Ollama 还需要 C 编译器和 CMake,建议一起装。
# Termux 里先给存储权限,弹窗选允许 termux-setup-storage # 更新包索引和已装包 pkg update && pkg upgrade -y # 编译 Ollama 需要的依赖,包名以 pkg search 结果为准 pkg install -y git cmake golang libjpeg-turbo clangtermux-setup-storage会在系统层面弹权限,允许后 Termux 才能读写共享目录;pkg update过程中如果问是否覆盖配置文件,一般选默认,不要中途杀掉进程。clang是 C 编译器,cmake负责构建,golang提供go命令,libjpeg-turbo是图像相关依赖。装完用go version和cmake --version确认,缺一个后面编译就会断。
4.3 编译 Ollama:go generate 与 go build 的坑
Termux 里编译 Ollama 用浅克隆减少下载量,进目录后先go generate ./...再go build .。注意go generate和./...之间有空格,go build .的点表示当前目录。手机端编译建议显式打开 CGO,否则部分依赖会跳过,运行时报缺少动态库。编译产物是当前目录下的ollama可执行文件。
# 浅克隆减少下载量,目录名固定为 ollama git clone --depth 1 https://github.com/ollama/ollama.git cd ollama # 手机端编译建议显式打开 CGO export CGO_ENABLED=1 # 生成构建文件,注意 go generate 和 ./... 之间有空格 go generate ./... # 编译当前目录,产物是 ollama 可执行文件 go build .--depth 1只拉最近一次提交,省流量;CGO_ENABLED=1让需要 C 绑定的依赖参与编译,关掉可能编出一个跑不起来的二进制。go generate ./...会跑项目里的生成脚本,报错先看缺哪个命令,回上一步补包。go build .的.不能丢,写成go build会编译包路径而不是当前目录。编译失败时先go clean -cache再重试,手机内存小的时候不要同时开太多应用。
4.4 启动服务并拉取 deepseek-r1:8b
编译完成后先后台启动服务,用curl探活,再拉模型。Termux 的后台进程容易被系统省电策略杀掉,启动前加termux-wake-lock,跑完再termux-wake-unlock。模型标签用deepseek-r1:8b,如果你那边的模型库标签是deepseekr1:8b,按./ollama list实际结果替换。
# 阻止 Android 省电策略杀后台 termux-wake-lock # 后台启动服务,日志落到当前目录 ./ollama serve > ollama.log 2>&1 & # 探活:返回版本信息说明 11434 已监听 curl -s http://127.0.0.1:11434/api/version # 拉取并运行 8B 模型,标签以实际列表为准 ./ollama pull deepseek-r1:8b ./ollama run deepseek-r1:8btermux-wake-lock只是降低被系统杀掉概率,不代表永不被杀;./ollama serve前面的./表示运行当前目录的二进制,不要写成全局ollama,否则可能调到旧版本。日志重定向到ollama.log方便看启动错误,curl返回版本信息后再拉模型,能少走一段弯路。8B 在手机上加载慢,第一次run多等一会儿,失败先看ollama.log里的内存和动态库报错。
5. 避坑与排查:Ollama、Docker、Termux 最容易翻车的四处
这套部署的血泪经验集中在四处:端口和模型目录、Docker 容器里的网络、iPhone 快捷指令的鉴权、Termux 的编译和后台存活。下面按「现象、原因、解决」写,每条都给能直接敲的排查命令。装坏了不要急着重装,先按顺序看日志和端口,后悔药就在这些命令里。
5.1 端口、模型目录与磁盘占满
现象:ollama serve启动失败,日志里出现address already in use,或者 Open WebUI 能打开但模型列表一直空。原因通常是旧 Ollama 进程还占着 11434,或者OLLAMA_MODELS指到了没有写权限的目录。解决顺序是先看端口占用,再看服务环境变量,最后看目录权限。
# 看 11434 被谁占用 lsof -i :11434 # Linux 没有 lsof 时用 ss ss -lntp | grep 11434 # 确认服务实际使用的模型目录 systemctl --user show ollama -p Environment # 看模型目录权限和占用 ls -ld /data/ollama/models du -sh /data/ollama/modelslsof输出里的 PID 就是占用进程,确认是旧 Ollama 后停掉对应服务,不要直接杀未知进程。systemctl --user show能看到服务实际拿到的OLLAMA_MODELS,如果和你以为的路径不一致,模型当然列不出来。ls -ld看目录所有者和权限,Ollama 进程用户没有写权限时拉模型会失败;du -sh看磁盘是否已满,磁盘满时下载会中断,ollama list可能留下一个不完整条目。
如果是 Docker 里的 Open WebUI 连不上,先确认宿主机curl能通,再进容器测。宿主机通、容器不通,问题在容器网络,不在模型。
5.2 Docker 访问宿主机 Ollama 的网络断点
现象:Open WebUI 设置里填127.0.0.1:11434,保存后模型列表为空,容器日志里出现 connection refused。原因是在容器里127.0.0.1指向容器自己,不是宿主机。解决是让容器通过host.docker.internal访问宿主机,Linux 上还要加--add-host=host.docker.internal:host-gateway。
# 启动 Open WebUI 容器,端口 3000 映射容器 8080 docker run -d \ --name open-webui \ -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ -v open-webui:/app/backend/data \ --restart always \ <open-webui镜像地址>-p 3000:8080把宿主机 3000 映射到容器 8080,浏览器访问http://127.0.0.1:3000;--add-host让 Linux 也能解析host.docker.internal;OLLAMA_BASE_URL是 Open WebUI 找 Ollama 的地址,必须指向宿主机,不是容器内。镜像地址按你实际拉取到的 Open WebUI 镜像填,不要照抄占位符。数据卷open-webui保存账号和配置,删容器不要删卷。
# 进容器里测宿主机地址是否通 docker exec -it open-webui sh # 容器内执行,返回 JSON 说明网络通 curl -s http://host.docker.internal:11434/api/tags容器内curl不通时,先看宿主机防火墙和 Ollama 是否监听0.0.0.0。Docker Desktop 资源分配太小也会导致 Open WebUI 启动后反复重启,docker logs --tail 50 open-webui能看到内存不足或端口冲突。不要一上来就删容器重建,先看日志。
5.3 iPhone 快捷指令 401/403 与授权弹窗
现象:快捷指令首次运行提示未授权、401 或 403,或者一直停在加载。原因常见三种:Key 复制时带了空格或换行、服务地址多了斜杠、快捷指令没有网络权限。解决是先在电脑上用curl验证同一组参数,再回手机逐项核对。
| 现象 | 原因 | 解决 |
|---|---|---|
| 401 | Key 错误或过期 | 重新复制,确认无空格 |
| 403 | 服务端限制来源或权限不足 | 检查 Key 权限和白名单 |
| 一直加载 | 超时太短或地址不通 | 超时调到 60 秒,先 curl 验证 |
| 没弹网络权限 | 首次点了拒绝 | 到快捷指令设置里手动允许 |
# 先在电脑上验证 Key 和地址,返回正常再去手机填 curl -s -o /dev/null -w "%{http_code}\n" \ -H "Authorization: Bearer $API_KEY" \ http://你的服务地址/v1/models-o /dev/null丢弃响应体,-w "%{http_code}"只打印状态码,200 说明鉴权和地址基本对;401 查 Key,403 查权限,404 查路径。服务地址不要以/结尾,拼接路径时容易出现双斜杠。快捷指令里的 Key 字段如果是文本变量,粘贴后前后不要留空行。
5.4 Termux 编译失败与 Android 后台杀进程
现象:go build .报 C 编译器错误、找不到头文件,或者模型跑到一半 Termux 进程消失。原因通常是缺clang、CGO 没开、构建缓存损坏,或者 Android 省电策略杀了后台。解决是先补依赖,再清缓存,最后用 wake lock 保活。
# 确认 CGO 和编译器 go env CGO_ENABLED clang --version # 清理构建缓存后重试 go clean -cache export CGO_ENABLED <p> <a href="https://download.csdn.net/download/max500600/90322352" style="color:#ec7500;font-size:14px;"> 本文还有配套的精品资源,点击获取 </a> <img alt="menu-r.4af5f7ec.gif" src="https://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif" style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;"> </p>