Chemmy's Blog

chengming0916@outlook.com

环境变量

用于配置 Ollama 的运行环境和行为,以下是一些常见的环境变量及其用途:

网络配置

  • OLLAMA_HOST:定义 Ollama 服务器的协议和主机地址。默认为 127.0.0.1:11434,仅本机地址可通过 11434 端口访问该服务。可以通过此变量自定义 Ollama 服务的监听地址和端口,例如设置为 0.0.0.0:8080 ,可允许其他电脑访问 Ollama(如:局域网中的其他电脑)。默认使用 http 协议。若要使用 https 协议,可设置为:https://0.0.0.0:443

  • OLLAMA_ORIGINS:配置允许跨域请求的来源列表。默认包含 localhost127.0.0.10.0.0.0 等本地地址以及一些特定协议的来源。通过设置此变量,可以指定哪些来源可以访问 Ollama 服务,例如 OLLAMA_ORIGINS=*,https://example.com 允许所有来源以及 https://example.com 的跨域请求。

模型管理

  • OLLAMA_MODELS:指定模型文件的存储路径。默认为用户主目录下的 .ollama/models 文件夹。通过设置此变量,可以自定义模型文件的存储位置,例如 OLLAMA_MODELS=/path/to/models 将模型存储在指定的路径下。

  • OLLAMA_KEEP_ALIVE:控制模型在内存中的存活时间。默认为 5 分钟。负值表示无限存活,0 表示不保持模型在内存中。此变量用于优化模型加载和运行的性能,例如 OLLAMA_KEEP_ALIVE=30m 可以让模型在内存中保持 30 分钟。

  • OLLAMA_LOAD_TIMEOUT:设置模型加载过程中的超时时间。默认为 5 分钟。0 或负值表示无限超时。此变量用于防止模型加载过程过长导致服务无响应,例如 OLLAMA_LOAD_TIMEOUT=10m 可以将超时时间设置为 10 分钟。

  • OLLAMA_MAX_LOADED_MODELS:限制同时加载的模型数量。默认为 0,表示不限制。此变量用于合理分配系统资源,避免过多模型同时加载导致资源不足,例如 OLLAMA_MAX_LOADED_MODELS=4 可以限制同时加载 4 个模型。

  • OLLAMA_MAX_QUEUE:设置请求队列的最大长度。默认为 512。此变量用于控制并发请求的数量,避免过多请求同时处理导致服务过载,例如 OLLAMA_MAX_QUEUE=1024 可以将队列长度设置为 1024。

  • OLLAMA_MAX_VRAM:设置 GPU 显存的最大使用量(以字节为单位)。默认为 0,表示不限制。此变量用于控制 GPU 资源的使用,避免显存不足导致的问题,例如 OLLAMA_MAX_VRAM=8589934592 可以将显存限制为 8GB。

  • OLLAMA_GPU_OVERHEAD:为每个 GPU 预留的显存(以字节为单位)。默认为 0。此变量用于确保每个 GPU 有一定的显存余量,避免显存不足导致的问题,例如 OLLAMA_GPU_OVERHEAD=1073741824 可以为每个 GPU 预留 1GB 的显存。

性能与调度

  • OLLAMA_NUM_PARALLEL:设置同时处理的并行请求数量。默认为 0,表示不限制。此变量用于优化服务的并发处理能力,例如 OLLAMA_NUM_PARALLEL=8 可以同时处理 8 个并行请求。

  • OLLAMA_SCHED_SPREAD:允许模型跨所有 GPU 进行调度。默认为 false。启用此变量可以提高模型运行的灵活性和资源利用率,例如 OLLAMA_SCHED_SPREAD=1 可以启用跨 GPU 调度。

调试与日志

  • OLLAMA_DEBUG:启用额外的调试信息。默认为 false。开启此变量可以获取更多的调试日志,帮助排查问题,例如 OLLAMA_DEBUG=1 可以启用调试模式。

  • OLLAMA_NOHISTORY:禁用 readline 历史记录。默认为 false。启用此变量可以避免保存命令历史记录,例如 OLLAMA_NOHISTORY=1 可以禁用历史记录。

  • OLLAMA_NOPRUNE:在启动时不清理模型文件。默认为 false。启用此变量可以保留所有模型文件,避免不必要的清理操作,例如 OLLAMA_NOPRUNE=1 可以禁用模型文件的清理。

特性开关

  • OLLAMA_FLASH_ATTENTION:启用实验性的 Flash Attention 特性。默认为 false。此变量用于测试和使用新的注意力机制特性,例如 OLLAMA_FLASH_ATTENTION=1 可以启用 Flash Attention。

  • OLLAMA_MULTIUSER_CACHE:为多用户场景优化提示缓存。默认为 false。启用此变量可以提高多用户环境下的缓存效率,例如 OLLAMA_MULTIUSER_CACHE=1 可以启用多用户缓存优化

代理设置

  • HTTP_PROXY:设置 HTTP 代理服务器地址。此变量用于配置 Ollama 在进行 HTTP 请求时使用的代理服务器,例如 HTTP_PROXY=http://proxy.example.com:8080 可以让 Ollama 使用指定的 HTTP 代理。

  • HTTPS_PROXY:设置 HTTPS 代理服务器地址。此变量用于配置 Ollama 在进行 HTTPS 请求时使用的代理服务器,例如 HTTPS_PROXY=https://proxy.example.com:8080 可以让 Ollama 使用指定的 HTTPS 代理。

  • NO_PROXY:设置不使用代理的地址列表。此变量用于指定哪些地址在进行请求时不使用代理,例如 NO_PROXY=localhost,example.com 可以让 Ollama 在访问 localhost 和 example.com 时不使用代理.


CLI命令

命令 用途
ollama serve 在本地系统上启动 Ollama。
ollama create 从现有模型创建一个新模型,用于定制或训练。
ollama show 显示特定模型的详细信息,例如其配置和发布日期。
ollama run 运行指定的模型,使其准备好进行交互。
ollama pull 将指定的模型下载到您的系统。
ollama list 列出所有已下载的模型。
ollama ps 显示当前正在运行的模型。
ollama stop 停止指定的正在运行的模型。
ollama rm 从您的系统中移除指定的模型。

在终端,输入上面的命令 + ‘-h’,可查看具体命令的帮助文档(如,ollama show -h, 可查看 show 命令的帮助文档)。下面列出每个命令的具体用法和示例。

启动 Ollama

在本地系统上启动 Ollama:ollama server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ollama serve -h

---
Start ollama

Usage:
ollama serve [flags]

Aliases:
serve, start

Flags:
-h, --help help for serve

Environment Variables:
OLLAMA_DEBUG Show additional debug information (e.g. OLLAMA_DEBUG=1)
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)
OLLAMA_KEEP_ALIVE The duration that models stay loaded in memory (default "5m")
OLLAMA_MAX_LOADED_MODELS Maximum number of loaded models per GPU
OLLAMA_MAX_QUEUE Maximum number of queued requests
OLLAMA_MODELS The path to the models directory
OLLAMA_NUM_PARALLEL Maximum number of parallel requests
OLLAMA_NOPRUNE Do not prune model blobs on startup
OLLAMA_ORIGINS A comma separated list of allowed origins
OLLAMA_SCHED_SPREAD Always schedule model across all GPUs

OLLAMA_FLASH_ATTENTION Enabled flash attention
OLLAMA_KV_CACHE_TYPE Quantization type for the K/V cache (default: f16)
OLLAMA_LLM_LIBRARY Set LLM library to bypass autodetection
OLLAMA_GPU_OVERHEAD Reserve a portion of VRAM per GPU (bytes)
OLLAMA_LOAD_TIMEOUT How long to allow model loads to stall before giving up (default "5m")
---

模型管理

1. 列出所有已下载的模型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ollama list -h
List models

Usage:
ollama list [flags]

Aliases:
list, ls

Flags:
-h, --help help for list

Environment Variables:
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)

2. 查看某个模型的详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ollama show -h
Show information for a model

Usage:
ollama show MODEL [flags]

Flags:
-h, --help help for show
--license Show license of a model
--modelfile Show Modelfile of a model
--parameters Show parameters of a model
--system Show system message of a model
--template Show template of a model

Environment Variables:
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)

3. 显示正在运行的大模型

1
2
3
4
5
6
7
8
9
10
11
ollama ps -h
List running models

Usage:
ollama ps [flags]

Flags:
-h, --help help for ps

Environment Variables:
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)

4. 停止指定的正在运行的模型

1
2
3
4
5
6
7
8
9
10
11
ollama stop -h
Stop a running model

Usage:
ollama stop MODEL [flags]

Flags:
-h, --help help for stop

Environment Variables:
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)

5. 删除已下载的大模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ollama rm -h

---
Remove a model

Usage:
ollama rm MODEL [MODEL...] [flags]

Flags:
-h, --help help for rm

Environment Variables:
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)
---

6. 下载大模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ollama pull -h

---
Pull a model from a registry

Usage:
ollama pull MODEL [flags]

Flags:
-h, --help help for pull
--insecure Use an insecure registry

Environment Variables:
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)
---

运行大模型

尽管我们可以通过第三方的 Web UI 等方式与基于 Ollama 部署的本地大模型进行交互,但通过 run 命令的方式与大模型交互,具有以下的优点:

  • 直接在终端运行 run 命令,可便捷高效地验证本地部署的大模型的响应效果
  • 记录保存大模型的响应:可将大模型的响应记录到本地文件。
  • 基于 run 命令开发自动化执行的脚本,定时调度执行,实现与大模型交互的自动化工作流程。

run 命令的帮助文档:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ollama run -h

---
Run a model

Usage:
ollama run MODEL [PROMPT] [flags]

Flags:
--format string Response format (e.g. json)
-h, --help help for run
--insecure Use an insecure registry
--keepalive string Duration to keep a model loaded (e.g. 5m)
--nowordwrap Don't wrap words to the next line automatically
--verbose Show timings for response

Environment Variables:
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)
OLLAMA_NOHISTORY Do not preserve readline history
---

Longhorn 单机部署指南

Longhorn 支持单机部署,它是一款基于 Kubernetes 的分布式块存储系统,同时也可以在单节点 Kubernetes 集群中完成部署和使用,适合开发测试、边缘计算等轻量场景。

一、单机部署的核心前提

  1. 环境要求

    1. 单节点 Kubernetes 集群(如 Minikube、k3s、MicroK8s 或手动搭建的单节点集群)

    2. 节点满足 Longhorn 基础条件:

      • 操作系统:Linux(内核 4.14+)

      • 容器运行时:Docker、containerd 等

      • 磁盘:至少 1 块空闲磁盘或目录(用于存储数据)

      • 依赖工具:open-iscsi(必须安装并启动)

  2. 网络要求

    1. 节点能访问互联网(用于拉取 Longhorn 镜像)

    2. Kubernetes 集群网络插件正常运行(如 Calico、Flannel)

二、单机部署的具体步骤(以 k3s 为例)

1. 部署单节点 k3s 集群

1
2
3
4
# 安装 k3s(禁用默认存储,避免冲突)
curl -sfL https://get.k3s.io | sh -s - --disable local-storage
# 配置 kubectl 环境变量
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

2. 安装依赖组件 open-iscsi

1
2
3
4
5
6
7
# Ubuntu/Debian
sudo apt update && sudo apt install -y open-iscsi
sudo systemctl enable --now iscsid

# CentOS/RHEL
sudo yum install -y iscsi-initiator-utils
sudo systemctl enable --now iscsid

3. 部署 Longhorn

推荐使用 Helm 部署(更易管理):

1
2
3
4
5
6
7
8
9
# 安装 Helm 3
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# 添加 Longhorn Helm 仓库
helm repo add longhorn https://charts.longhorn.io
helm repo update

# 部署 Longhorn 到 longhorn-system 命名空间
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace

4. 验证部署状态

1
2
3
4
5
6
# 检查 Pod 是否全部 Running
kubectl -n longhorn-system get pods

# 检查 Longhorn 存储类是否创建
kubectl get sc
# 正常会看到 longhorn 存储类,且标注为 default

三、单机部署的注意事项

  1. 高可用限制

    1. 单机部署下,Longhorn 无法提供数据冗余(默认副本数为 3,需手动调整为 1),节点故障会导致数据丢失,仅适合非生产环境。

    2. 修改副本数:在 Longhorn UI 中设置默认副本数为 1,或在 PVC 注解中指定 numberOfReplicas: 1

  2. 存储路径配置

    1. 如果节点没有空闲磁盘,可以指定目录作为存储后端:

      1
      2
      3
      4
      5
      6
      # 创建本地目录
      sudo mkdir -p /data/longhorn
      sudo chmod 777 /data/longhorn
      # 部署时通过 Helm 参数指定
      helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace \
      --set defaultSettings.defaultDataPath=/data/longhorn
  3. 访问 Longhorn UI

    1. 单机环境下可通过 NodePort 访问 UI:

      1
      2
      kubectl -n longhorn-system get svc longhorn-frontend
      # 访问 http://<节点IP>:<NodePort>

四、单机部署的适用场景

  • 开发/测试环境:快速验证 Longhorn 功能、测试存储与应用的兼容性。

  • 边缘节点:资源受限的边缘设备,仅需单节点提供块存储。

  • 个人学习:熟悉 Kubernetes 存储编排和 Longhorn 运维操作。

是否需要我为你整理单机部署 Longhorn 后的测试用例,比如创建 PVC 并挂载到 Nginx 容器进行验证?

在Windows 10中搭建Qt 4.8.7 ARM32交叉编译环境,核心是获取ARM32交叉编译工具链编译Qt 4.8.7源码适配ARM架构配置环境变量与编译规则,以下是分步实操指南(全程需管理员权限,建议关闭杀毒软件避免文件拦截)。

一、前置准备:确定核心依赖与下载清单

Qt 4.8.7本身不提供预编译的ARM32交叉编译包,需手动编译源码,需下载以下组件(版本需严格匹配,避免兼容性问题):

组件名称 用途 下载地址/获取方式
MinGW-w64(8.1.0) Windows下的GCC编译环境 SourceForge(选x86_64-posix-seh)
ARM32交叉编译工具链 编译ARM32架构程序 推荐Linaro 7.5.0(arm-linux-gnueabihf):Linaro官网
Qt 4.8.7源码 Qt核心源码(需适配ARM) Qt Archive
Python 2.7.x Qt 4.8.7编译依赖(必须2.7) Python官网(选Windows x86-64 MSI)
Perl 5.28+ Qt编译脚本依赖 Strawberry Perl(选64位版本)
CMake 3.10+ 辅助编译(可选但建议) CMake官网(选Windows x64 Installer)
7-Zip 解压tar.gz/压缩包 7-Zip官网

二、步骤1:安装基础编译环境(Windows侧)

1.1 安装MinGW-w64

  • 下载MinGW-w64后解压到固定路径(如D:\mingw64),将D:\mingw64\bin添加到系统环境变量Path(优先级高于系统自带MinGW)。

  • 验证:打开CMD,输入gcc -v,输出MinGW-w64 8.1.0版本信息则成功。

1.2 安装Python 2.7 + Perl + CMake

  • Python 2.7:安装时勾选“Add Python to PATH”,验证python --version输出2.7.x。

  • Strawberry Perl:默认安装即可,验证perl -v输出5.28+版本。

  • CMake:安装时勾选“Add CMake to the system PATH for all users”,验证cmake --version输出3.10+。

三、步骤2:配置ARM32交叉编译工具链

2.1 解压并配置Linaro工具链

  • 下载Linaro工具链(如gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf.tar.xz),解压到固定路径(如D:\arm-linux-gnueabihf-7.5.0)。

  • 将工具链bin目录(D:\arm-linux-gnueabihf-7.5.0\bin)添加到系统环境变量Path

  • 验证:CMD输入arm-linux-gnueabihf-gcc -v,输出Linaro 7.5.0版本信息则成功。

四、步骤3:修改Qt 4.8.7源码适配ARM交叉编译

Qt 4.8.7默认不支持Windows下ARM交叉编译,需手动修改配置文件:

4.1 解压Qt源码

qt-everywhere-opensource-src-4.8.7.tar.gz用7-Zip解压到固定路径(如D:\qt-4.8.7-arm),避免路径含中文/空格。

4.2 修改交叉编译配置文件

Qt 4.8.7的交叉编译需通过mkspecs目录下的配置文件定义,步骤:

  1. 复制D:\qt-4.8.7-arm\mkspecs\qws\linux-arm-gnueabi-g++目录,重命名为linux-arm-gnueabihf-g++(匹配Linaro工具链的hf(硬件浮点))。

  2. 编辑新目录下的qmake.conf,替换内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 基础配置
MAKEFILE_GENERATOR = UNIX
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib

# 交叉编译工具链前缀(匹配Linaro工具链)
CROSS_COMPILE = arm-linux-gnueabihf-
CC = $$CROSS_COMPILE gcc
CXX = $$CROSS_COMPILE g++
LINK = $$CROSS_COMPILE g++
AR = $$CROSS_COMPILE ar cqs
RANLIB = $$CROSS_COMPILE ranlib
STRIP = $$CROSS_COMPILE strip
RC = $$CROSS_COMPILE windres

# ARM架构参数(适配ARM32,如ARMv7)
QMAKE_CFLAGS = -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard -O2
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
QMAKE_LFLAGS = -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard

# Qt运行环境(QWS是Qt 4的嵌入式窗口系统)
QMAKE_INCDIR =
QMAKE_LIBDIR =
QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
QMAKE_INCDIR_OPENGL_ES2 =
QMAKE_LIBDIR_OPENGL_ES2 =
QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =

# 系统库
QMAKE_LIBS = -lrt -ldl -lpthread
QMAKE_LIBS_QT_ENTRY = -lQtCore -lQtGui
QMAKE_LIBS_GUI = -lX11 -lXext -lXt -lm -lSM -lICE -lfontconfig -lfreetype
QMAKE_LIBS_CORE = -lz -lm -ldl -lpthread

# 输出目录
DESTDIR = ../bin

注:-march=armv7-a/-mtune=cortex-a9需根据目标ARM芯片调整(如ARMv6则改-march=armv6)。

五、步骤4:配置并编译Qt 4.8.7 ARM版本

5.1 生成编译配置(关键:避免Qt默认编译Windows版本)

打开MinGW-w64的CMD窗口(必须用MinGW的终端,而非系统CMD),执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 进入Qt源码根目录
cd /d D:\qt-4.8.7-arm

# 清理旧配置(首次编译可跳过)
mingw32-make distclean

# 配置交叉编译参数(核心命令)
configure -prefix D:\qt-4.8.7-arm-build \
-opensource \
-confirm-license \
-release \
-shared \
-embedded arm \
-xplatform qws/linux-arm-gnueabihf-g++ \
-no-webkit \
-no-phonon \
-no-phonon-backend \
-no-qt3support \
-no-multimedia \
-no-ltcg \
-no-dbus \
-no-opengl \
-no-openvg \
-no-svg \
-no-javascript-jit \
-no-script \
-no-scripttools \
-no-declarative \
-no-declarative-debug \
-nomake demos \
-nomake examples \
-nomake docs \
-qt-libpng \
-qt-libjpeg \
-qt-zlib \
-little-endian \
-host-little-endian \
-verbose

参数说明:

  • -prefix:指定Qt ARM版本安装路径;

  • -embedded arm:启用嵌入式ARM支持(Qt 4的QWS);

  • -xplatform:指定步骤4.2中修改的交叉编译配置;

  • 禁用webkit/phonon等非必需模块,减少编译时间和报错。

5.2 编译Qt源码

配置成功后(无error),执行编译命令:

1
2
# 多核编译(-j后接CPU核心数,如8核则-j8)
mingw32-make -j8

⚠️ 编译耗时(1-2小时),若报错:

  • 检查工具链路径是否正确;

  • 检查qmake.conf中工具链前缀是否匹配;

  • 若提示“python找不到”,确保Python 2.7在PATH最前(Qt 4不兼容Python 3)。

5.3 安装编译后的Qt ARM版本

编译完成后执行:

1
mingw32-make install

安装完成后,D:\qt-4.8.7-arm-build即为可用于ARM32交叉编译的Qt环境。

六、步骤5:验证交叉编译环境

编写简单Qt测试程序,验证能否编译出ARM32可执行文件:

6.1 新建测试工程

在任意目录新建test.pro

1
2
3
4
QT += core gui
TARGET = test
TEMPLATE = app
SOURCES += main.cpp

新建main.cpp

1
2
3
4
5
6
7
8
9
10
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel lbl("Hello ARM32 Qt 4.8.7!");
lbl.show();
return a.exec();
}

6.2 用Qt ARM版本的qmake生成Makefile

打开MinGW终端,执行:

1
2
# 指定ARM版本的qmake路径
D:\qt-4.8.7-arm-build\bin\qmake.exe test.pro -spec qws/linux-arm-gnueabihf-g++

6.3 编译生成ARM32程序

执行:

1
mingw32-make

编译完成后生成test可执行文件,用file命令(需安装Git for Windows,或复制到Linux)验证:

1
2
# Git Bash中执行
file test

输出类似test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked,说明成功生成ARM32程序。

七、常见问题与解决

  1. configure阶段提示“无法找到arm-linux-gnueabihf-gcc”

    1. 检查工具链bin目录是否在PATH中,重启终端生效;

    2. 确认工具链解压完整,无文件缺失。

  2. 编译阶段提示“undefined reference to xxx”

    1. 禁用非必需模块(如webkit),Qt 4.8.7部分模块对ARM交叉编译支持差;

    2. 检查qmake.conf中链接库参数(QMAKE_LIBS)是否完整。

  3. Python版本错误

    1. 卸载Python 3,仅保留Python 2.7,或在PATH中优先放置Python 2.7路径。

总结

Win10下Qt 4.8.7 ARM32交叉编译的核心是:

  1. 搭建MinGW+ARM交叉工具链环境;

  2. 修改Qt源码的交叉编译配置文件;

  3. 通过configure指定ARM编译参数,编译源码;

  4. 验证生成的程序为ARM32架构。

若追求效率,也可在Linux虚拟机中完成Qt 4.8.7 ARM交叉编译(Linux下交叉编译兼容性更好),再将编译结果复制到Windows使用。

0%