- 文档
- 教程
- 构建工具
【免费下载链接】cangjie_build
仓颉SDK集成构建指导书。
本文基于 Cangjie SDK 集成构建指导书(cangjie_build)中的 Linux → OHOS 交叉构建指南,讲解在 Linux x86_64 系统上搭建完整构建环境、交叉编译ohos-aarch64目标平台的仓颉编译器(cjc)、调试器(cjdb)、运行时、标准库、STDX 扩展库与 cjpm/cjfmt/cjprof/cjcompat 工具集,并最终打包出cangjie-sdk与cangjie-stdx两个发行件的全过程。读完本文,你可以独立完成一次可验证的 OHOS 目标仓颉 SDK 构建,并理解每个编译参数(如--target-toolchain、--target-sysroot、OPENSSL_PATH)背后的依赖关系。
一、构建概述
1.1 构建目标与适用场景
该指南(原文为 doc_en/linux_cross_ohos.md,中文对照版见 docs/linux_cross_ohos.md)面向的目标是:
- 在 Linux 系统上搭建仓颉 SDK 构建环境;
- 交叉构建一个包含全部组件的
ohos-aarch64仓颉 SDK(即编译产物运行在 OpenHarmony/OpenHarmony aarch64 设备上,而构建本身发生在 x86_64 Linux 主机上)。
在整个构建指导书中,它属于“Linux → OHOS 交叉构建”路线。根据 README.md 的说明,构建指导书基于 Ubuntu 22.04 等高版本操作系统,构建出的仓颉 SDK 只能运行在对应的目标系统上;若需要在更低版本系统运行,需要在更低版本系统上构建,步骤与复杂度都会增加。同仓库还提供 Linux 原生 OHOS 构建 等文档构建包含更多组件(cjlint、cjcov、cjtrace-recover、lspserver 等)的完整linux-ohosSDK,二者共享相同的工具链准备流程。
1.2 构建流程全景
原文档给出的构建流水线分为 5 个阶段:
对应到实际操作,五个阶段依次是:准备环境(系统工具 + OHOS 工具链 + 环境变量)→ 获取仓颉源码(4 个代码仓库)→ 编译编译器与调试器 → 编译运行时 → 编译标准库 → 编译 STDX 扩展库 → 编译工具集(cjpm、cjfmt、cjprof、cjcompat)→ 组织打包(SDK 包 + STDX 包)→ 运行 Hello, Cangjie 验证。
1.3 关键注意事项
原文档明确列出了 4 条关键约束,直接影响构建是否成功:
| 注意事项 | 说明 |
|---|---|
| 环境隔离 | 所有自定义依赖都安装在/opt/buildtools,避免污染系统路径 |
| 内存要求 | 完整构建需要 ≥8GB 内存,建议额外添加 4GB 交换空间(swap) |
| 网络要求 | 首次构建需要下载约 3GB 数据,请确保稳定的网络连接 |
| CPU 架构 | 构建主机要求 x86_64 |
1.4 各组件对构建工具的版本依赖
交叉构建涉及的每个组件都需要特定版本的构建工具,构建依赖工具表(Build Dependency Tools)给出了 Linux 环境下组件与工具的对应关系(✅ 表示该组件依赖该工具):
| 构建工具依赖 | cjc | cjdb | runtime | std | cjpm | cjfmt | stdx |
|---|---|---|---|---|---|---|---|
| python: >3.7 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| googletest: >=1.12 | ✅ | -- | -- | -- | -- | -- | |
| LLVM: >=15.0.4 and <16 | ✅ | ✅ | ✅ | ✅ | -- | ✅ | ✅ |
| binutils: >=2.38 | ✅ | ✅ | ✅ | ✅ | -- | ✅ | ✅ |
| gcc: >=7.3.0 | ✅ | ✅ | ✅ | ✅ | -- | ✅ | ✅ |
| cmake: >=3.16.5 and <4 | ✅ | ✅ | ✅ | ✅ | -- | ✅ | ✅ |
| ninja: >1.10 | ✅ | ✅ | ✅ | ✅ | -- | ✅ | ✅ |
| openssl: >3 | -- | -- | -- | ✅ | -- | -- | ✅ |
| swig: >4 | -- | ✅ | -- | -- | -- | -- | -- |
这张表解释了后文多处“为什么”:
- 为什么系统工具里要装
clang-15/libclang-15-dev并把/usr/lib/llvm-15/bin加入PATH—— 因为 cjc、cjdb、runtime、std、cjfmt 都要求 LLVM 版本落在[15.0.4, 16)区间; - 为什么标准库和 STDX 编译前必须设置
OPENSSL_PATH—— 因为std与stdx依赖 OpenSSL 3+,而其他组件不依赖; - 为什么安装
swig—— 因为调试器cjdb依赖 swig >4 生成绑定代码; - 为什么安装
libgtest-dev—— cjc 构建需要 googletest >=1.12(本文命令通过--no-tests关闭了测试构建,但依赖仍需满足环境检查)。
二、环境准备
2.1 系统要求
- 操作系统:以 Ubuntu 22.04 LTS 作为示例,其他版本也可以参考此流程;
- 磁盘空间:≥50GB;
- 内存:≥8GB(物理内存 + 交换空间);
- 用户权限:普通用户 + sudo 权限。
可以选择基于官方提供的 Docker 环境进行构建。该镜像为 Ubuntu 18.04,已内置构建仓颉所需的全部系统工具与构建工具:
docker pull swr.cn-north-4.myhuaweicloud.com/cj-docker/cangjie_ubuntu18_x86_kernel:v2.9
注意区分两条路线:使用官方镜像时,后续OHOS_ROOT与OPENSSL_PATH的取值与本节的裸机取值不同(原文档中均以“若您正在使用官方镜像”单独标注),后文会分别给出。
2.2 安装系统工具
(1)使用华为镜像源(可选)
# 1. 备份配置文件: sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak; # 2. 修改 sources.list 文件,将 http://archive.ubuntu.com 和 http://security.ubuntu.com # 替换为 http://mirrors.huaweicloud.com,可参考如下命令: sudo sed -i "s@http://.*archive.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list; sudo sed -i "s@http://.*security.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list; # 3. 更新索引 sudo apt-get update;(2)安装系统工具
sudo apt update && sudo apt install -y \ tar unzip wget curl libcurl4 expat openssl make gcc g++ gettext \ nfs-common libtool sqlite3 zlib1g-dev libssl-dev cmake ninja-build\ libcurl4-openssl-dev sudo autoconf build-essential rapidjson-dev \ texinfo binutils expat libelf-dev libdwarf-dev openssh-client ssh \ dos2unix libxext-dev libxtst-dev libxt-dev libcups2-dev clang clang-15 libedit-dev\ libxrender-dev zip bzip2 libopenmpi-dev vim gdb lldb libclang-15-dev libgtest-dev\ rpm patch libtinfo5 cpio rpm2cpio libncurses5 libncurses5-dev strace net-tools swig;结合依赖工具表可以确认其中几个关键包的用途:clang-15、libclang-15-dev提供 LLVM 15 工具链(满足[15.0.4, 16)版本约束);libedit-dev是 cjdb 的依赖(cjdb 依赖libedit与 ncurses);swig服务于 cjdb 的绑定生成;libssl-dev提供 OpenSSL 开发头文件;ninja-build、cmake满足各组件对构建系统的版本要求;zip、bzip2则在第 7 章打包 STDX 的.zip产物时使用。
2.3 准备 ohos-aarch64 交叉工具链
交叉构建 OHOS 目标的最核心前提是:先构建出 OHOS 侧的交叉工具链与 musl sysroot。原文档将该步骤委托给独立的工具链构建指南:编译 ohos-aarch64 工具链(doc_en/linux_ohos_toolchain.md),该指南会引导你同步 OpenHarmony 源码、交叉编译 musl 与 openssl、构建ohos-sdk工具链,并把产物归集到OHOS_ROOT目录下。
工具链指南中“Copy Toolchain”一节(约 doc_en/linux_ohos_toolchain.md#L130-L169)揭示了OHOS_ROOT的内部结构,这正是理解后文所有--target-*参数的钥匙:
${OHOS_ROOT}/prebuilts/clang/ohos/linux-x86_64/:Linux 主机上可用的 OHOS Clang 工具链(linux-x86_64表示工具链运行平台);${OHOS_ROOT}/out/sdk/obj/third_party/musl/sysroot/:OHOS 目标根文件系统,由 musl 的usr、sdk-native/os-irrelevant/sysroot/usr以及各架构(aarch64-linux-ohos、x86_64-linux-ohos)的 openssl 头文件与库合并而成,其中还包含clang/15.0.4的 libc++ 与 libc++abi。
因此本指南中--target-toolchain指向 OHOS Clang 的bin目录(交叉编译器可执行文件),--target-sysroot指向合并后的 musl sysroot(头文件与目标库),两者共同决定了交叉编译产物的 ABI 与链接结果。
工具链就绪后,设置指向它的环境变量:
export OHOS_ROOT=/opt/buildtools/ohos_root;若您正在使用官方镜像,则使用下方设置:
export OHOS_ROOT=/opt/buildtools/ohos/ohos_root;
2.4 设置环境变量
(1)OpenSSL 环境变量设置
构建仓颉标准库依赖OpenSSL 3+。2.2 节安装系统工具时已经装入了 OpenSSL 库,现在需要设置OPENSSL_PATH环境变量。
第一步:定位 OpenSSL 的 lib 目录。库文件位置默认在/usr/lib/x86_64-linux-gnu/(x86_64),验证方法:
# 查找 libssl.so ls /usr/lib/x86_64-linux-gnu/libssl.so* # 查找 libcrypto.so ls /usr/lib/x86_64-linux-gnu/libcrypto.so*第二步:设置OPENSSL_PATH环境变量。
下方示例中的/path/to/openssl-3.x需替换为你实际的openssllib 目录
export OPENSSL_PATH=/path/to/openssl-3.x export LD_LIBRARY_PATH=$OPENSSL_PATH:$LD_LIBRARY_PATH若您正在使用官方镜像,则使用下方设置:
# x86_64 export OPENSSL_PATH=${BUILD_ROOT}/openssl-3.0.9/lib64;
(2)其他环境变量设置
在执行后续步骤前,配置以下环境变量:
export PATH=/usr/lib/llvm-15/bin:$PATH; # 将 clang-15 加入环境变量 # 架构名 export ARCH=x86_64 # 或 aarch64 # Cangjie SDK 版本号 export CANGJIE_VERSION=1.0.0 # Stdx 版本号 export STDX_VERSION=1 export SDK_NAME=ohos-aarch64各变量用途:ARCH与CANGJIE_VERSION、STDX_VERSION、SDK_NAME共同决定第 7 章打包产物的文件命名(如cangjie-sdk-ohos-aarch64-1.0.0.tar.gz、cangjie-stdx-ohos-aarch64-1.0.0.1.zip);PATH前置/usr/lib/llvm-15/bin是为了让各组件的build.py找到符合版本约束的 clang-15。
三、源码准备
3.1 创建工作区
下方示例中的/path/to/workspace需替换为你用于构建仓颉 SDK 的工作目录
export WORKSPACE=/path/to/workspace mkdir -p $WORKSPACE; cd $WORKSPACE;3.2 获取仓颉源码
git clone https://gitcode.com/Cangjie/cangjie_compiler.git -b main; git clone https://gitcode.com/Cangjie/cangjie_runtime.git -b main; git clone https://gitcode.com/Cangjie/cangjie_tools.git -b main; git clone https://gitcode.com/Cangjie/cangjie_stdx.git -b main;四个仓库分别承载:cangjie_compiler(编译器 cjc 与调试器 cjdb,以及最终 SDK 的组装输出目录output/output-aarch64-linux-ohos)、cangjie_runtime(运行时与标准库,其中 stdlib 位于cangjie_runtime/stdlib)、cangjie_tools(cjpm、cjfmt、cjprof、cjcompat 等工具)、cangjie_stdx(STDX 扩展库)。
四、构建流程
4.1 构建仓颉编译器与调试器
cd $WORKSPACE/cangjie_compiler; python3 build.py clean; python3 build.py build -t release --no-tests -v ${CANGJIE_VERSION}; python3 build.py build -t release \ -v ${CANGJIE_VERSION} \ --product cjc \ --no-tests \ --target ohos-aarch64 \ --target-toolchain ${OHOS_ROOT}/prebuilts/clang/ohos/linux-x86_64/llvm/bin \ --target-sysroot ${OHOS_ROOT}/out/sdk/obj/third_party/musl/sysroot \ --build-cjdb; python3 build.py build -t release \ --product libs \ --target ohos-aarch64 \ --target-toolchain ${OHOS_ROOT}/prebuilts/clang/ohos/linux-x86_64/llvm/bin \ --target-sysroot ${OHOS_ROOT}/out/sdk/obj/third_party/musl/sysroot; python3 build.py install; python3 build.py install --host ohos-aarch64; cp -Rn output-aarch64-linux-ohos/* output;各步骤与参数含义:
| 步骤 | 说明 |
|---|---|
build.py clean | 清理历史构建产物,保证干净构建 |
build -t release --no-tests -v ${CANGJIE_VERSION} | 构建主机侧(host)release 组件,--no-tests跳过测试目标,-v写入版本号 |
--product cjc ... --build-cjdb | 交叉构建 cjc,并同步构建调试器 cjdb;--target ohos-aarch64指定目标平台,--target-toolchain指向 OHOS Clang 的bin目录,--target-sysroot指向 musl sysroot |
--product libs --target ohos-aarch64 | 交叉构建 cjc 依赖的库文件(同样使用 OHOS 工具链与 sysroot) |
install/install --host ohos-aarch64 | 分别安装主机侧产物与 ohos-aarch64 目标侧产物 |
cp -Rn output-aarch64-linux-ohos/* output | 将 OHOS 目标产物并入output统一输出目录(-Rn表示递归且不覆盖已有文件),为后续 runtime/stdlib 的产物归集做准备 |
验证安装:
source output/envsetup.sh; cjc -v;output/envsetup.sh由安装步骤生成,source后cjc -v应打印仓颉编译器版本信息,说明主机侧编译器可用。
4.2 构建仓颉运行时
cd $WORKSPACE/cangjie_runtime/runtime; python3 build.py clean; python3 build.py build -t release -v ${CANGJIE_VERSION}; python3 build.py install; python3 build.py build -t release \ --target ohos-aarch64 \ --target-toolchain ${OHOS_ROOT} \ -v ${CANGJIE_VERSION}; python3 build.py install; cp -R output/common/linux_release_x86_64/{lib,runtime} ${WORKSPACE}/cangjie_compiler/output; cp -R output/common/linux_ohos_release_aarch64/{lib,runtime} ${WORKSPACE}/cangjie_compiler/output; cp -R output/common/linux_ohos_release_aarch64/{lib,runtime} ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos;运行时采用“双目标构建”:先构建主机侧(x86_64 Linux)runtime 并安装,再交叉构建ohos-aarch64目标 runtime。注意此处--target-toolchain直接传${OHOS_ROOT}(工具链指南已将 clang 与 sysroot 按约定结构归集到该目录下),与编译器构建中显式指向prebuilts/clang/ohos/linux-x86_64/llvm/bin的写法不同,这从各build.py的参数解析方式看属于两种等价的工具链定位约定。
最后三行cp将构建输出的lib与runtime目录分别归集到cangjie_compiler/output(SDK 组装目录)与output-aarch64-linux-ohos(OHOS 目标输出目录),使编译器、运行时的产物在同一个目录树下汇总,供第 7 章统一打包。
4.3 构建仓颉标准库
cd $WORKSPACE/cangjie_runtime/stdlib; python3 build.py clean; python3 build.py build -t release \ --target-lib=$WORKSPACE/cangjie_runtime/runtime/output \ --target-lib=$OPENSSL_PATH; python3 build.py build -t release \ --target ohos-aarch64 \ --target-lib=${WORKSPACE}/cangjie_runtime/runtime/output \ --target-toolchain ${OHOS_ROOT}/prebuilts/clang/ohos/linux-x86_64/llvm/bin \ --target-sysroot ${OHOS_ROOT}/out/sdk/obj/third_party/musl/sysroot; python3 build.py install; cp -R output/* ${WORKSPACE}/cangjie_compiler/output/; cp -R output/* ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos;标准库同样构建两份:主机侧与ohos-aarch64目标侧。--target-lib参数重复传入两个库路径——runtime 的输出目录(标准库链接运行时库)与OPENSSL_PATH(标准库链接 OpenSSL,这正是依赖表中std行标记openssl: >3的直接体现)。构建完成后将output/*归集进编译器的output与output-aarch64-linux-ohos目录,完成 SDK 内容主体的组装。
4.4 构建 STDX 扩展库
cd ${WORKSPACE}/cangjie_stdx; python3 build.py clean; python3 build.py build -t release \ --target-lib=${OPENSSL_PATH} \ --target ohos-aarch64 \ --target-sysroot ${OHOS_ROOT}/out/sdk/obj/third_party/musl/sysroot \ --target-toolchain ${OHOS_ROOT}/prebuilts/clang/ohos/linux-x86_64/llvm/bin; python3 build.py install; export CANGJIE_STDX_PATH=${WORKSPACE}/cangjie_stdx/target/linux_ohos_aarch64_cjnative/static/stdx;STDX 只针对ohos-aarch64目标构建(依赖表中stdx仅标记了 LLVM 与 openssl 依赖,故传入--target-lib=${OPENSSL_PATH})。安装后的产物位于cangjie_stdx/target/linux_ohos_aarch64_cjnative/static/stdx,将其导出为CANGJIE_STDX_PATH供后续引用;第 7 章的 STDX 打包直接取target/linux_ohos_aarch64_cjnative目录。
4.5 构建工具集
(1)cjpm(包管理器,交叉构建)
cd ${WORKSPACE}/cangjie_tools/cjpm/build; python3 build.py clean; python3 build.py build -t release --target ohos-aarch64; python3 build.py install; mkdir -p ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/config; cp $WORKSPACE/cangjie_tools/cjpm/dist/cjpm ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/bin; mv $WORKSPACE/cangjie_tools/cjpm/dist/*.toml ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/config;cjpm 以--target ohos-aarch64交叉构建,产物dist/cjpm放入 SDK 的tools/bin,dist/*.toml配置文件移入tools/config。
(2)cjfmt(代码格式化工具,交叉构建)
source ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/envsetup.sh; export PATH=${OHOS_ROOT}/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PATH; # 将 ohos 工具链加入环境变量 cd ${WORKSPACE}/cangjie_tools/cjfmt/build; python3 build.py clean; python3 build.py build -t release --target ohos-aarch64 --target-sysroot ${OHOS_ROOT}/out/sdk/obj/third_party/musl/sysroot; python3 build.py install; cp $WORKSPACE/cangjie_tools/cjfmt/build/build/bin/cjfmt ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/bin; cp $WORKSPACE/cangjie_tools/cjfmt/config/*.toml ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/config;注意 cjfmt 构建前的两个前置动作:先sourceOHOS 输出目录的envsetup.sh,再把 OHOS Clang 的bin目录前置到PATH——这正对应依赖表中cjfmt对 LLVM >=15.0.4 <16 的要求:交叉构建 cjfmt 时必须使用 OHOS 侧的 Clang 15,而不是主机默认编译器。
(3)cjprof(性能分析工具,主机侧构建)
cd ${WORKSPACE}/cangjie_tools/cjprof/build; python3 build.py build -t release; python3 build.py install; cp $WORKSPACE/cangjie_tools/cjprof/dist/bin/cjprof ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/bin cp $WORKSPACE/cangjie_tools/cjprof/dist/lib/* ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/lib; if [[ -d "$WORKSPACE/cangjie_tools/cjprof/static" ]]; then cp -Rf $WORKSPACE/cangjie_tools/cjprof/static cangjie/tools/config; fi(4)cjcompat(互操作兼容工具,主机侧构建)
cd ${WORKSPACE}/cangjie_tools/cjcompat/build; python3 build.py build -t release; python3 build.py install; cp $WORKSPACE/cangjie_tools/cjcompat/dist/bin/cjcompat ${WORKSPACE}/cangjie_compiler/output-aarch64-linux-ohos/tools/bin从源码组织方式看(原文档命令未带--target参数),cjprof 与 cjcompat 是直接在构建主机上编译的工具,编译后把可执行文件与运行库复制进 SDK 的tools/bin、tools/lib目录;而 cjpm 与 cjfmt 需要面向ohos-aarch64目标交叉构建。四种工具最终都归集到output-aarch64-linux-ohos/tools下,成为 SDK 包的一部分。
五、组织并打包文件
5.1 组织并打包 SDK
# 清空历史构建 mkdir -p $WORKSPACE/software; rm -rf $WORKSPACE/software/*; cd $WORKSPACE/software; # 拷贝 cangjie 目录 cp -R $WORKSPACE/cangjie_compiler/output-aarch64-linux-ohos cangjie; cp $WORKSPACE/cangjie_compiler/LICENSE cangjie; cp $WORKSPACE/cangjie_compiler/Open_Source_Software_Notice.docx cangjie; # 打包和设置权限 chmod -R 750 cangjie tar --format=gnu -zcvf cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gz cangjie; chmod 550 cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gz;打包内容即前面各步骤归集完成的output-aarch64-linux-ohos(含编译器、运行时、标准库与 tools),并附带LICENSE与开源软件声明Open_Source_Software_Notice.docx。按默认环境变量,最终产物为cangjie-sdk-ohos-aarch64-1.0.0.tar.gz;tar --format=gnu指定 GNU tar 归档格式以保证解压兼容性。
5.2 组织并打包 Stdx
cd $WORKSPACE/software; # 拷贝 stdx 目录 cp -r $WORKSPACE/cangjie_stdx/target/linux_ohos_aarch64_cjnative .; cp $WORKSPACE/cangjie_stdx/LICENSE linux_ohos_aarch64_cjnative; cp $WORKSPACE/cangjie_stdx/Open_Source_Software_Notice.docx linux_ohos_aarch64_cjnative; chmod -R 750 linux_ohos_aarch64_cjnative; zip -qr cangjie-stdx-${SDK_NAME}-${CANGJIE_VERSION}.${STDX_VERSION}.zip linux_${ARCH}_cjnative; chmod 550 cangjie-stdx-${SDK_NAME}-${CANGJIE_VERSION}.${STDX_VERSION}.zip;STDX 单独成包(zip 格式),命名规则中同时包含 SDK 名、Cangjie 版本号与 STDX 版本号,即默认得到cangjie-stdx-ohos-aarch64-1.0.0.1.zip。
六、验证:运行 Hello, Cangjie 程序
检查生成的文件:
ls -lh $WORKSPACE/software # 应包含: # - cangjie-sdk-${SDK_NAME}-${CANGJIE_VERSION}.tar.gz # - cangjie-stdx-${SDK_NAME}-${CANGJIE_VERSION}.${STDX_VERSION}.zip验证 Hello, Cangjie 程序:
cd $WORKSPACE; source $WORKSPACE/software/cangjie/envsetup.sh; echo "main() { println(\"Hello, Cangjie\") }" > hello.cj cjc hello.cj -o hello && ./hello # 您将在控制台看到以下输出: # Hello, Cangjie需要说明适用前提:这里验证的是 SDK 中主机侧工具链(cjc在构建主机上编译并运行hello);整个ohos-aarch64SDK 的价值在于其面向 OHOS aarch64 目标的编译器、运行时、标准库与工具集可在 OpenHarmony 开发链路上使用,构建出的 SDK 只能运行在对应的目标系统上(见 README.md 的通用说明)。控制台输出Hello, Cangjie即代表从环境准备、工具链、核心组件编译到打包的全链路构建成功。
七、关键参数速查表
| 参数 / 变量 | 取值(默认示例) | 作用 |
|---|---|---|
OHOS_ROOT | /opt/buildtools/ohos_root(官方镜像为/opt/buildtools/ohos/ohos_root) | OHOS 交叉工具链根目录,由工具链构建指南生成 |
--target-toolchain | ${OHOS_ROOT}/prebuilts/clang/ohos/linux-x86_64/llvm/bin(runtime 构建中为${OHOS_ROOT}) | 交叉编译使用的 Clang 工具链位置 |
--target-sysroot | ${OHOS_ROOT}/out/sdk/obj/third_party/musl/sysroot | OHOS 目标根文件系统(musl + openssl 头文件/库) |
OPENSSL_PATH | 主机 OpenSSL 3+ 的 lib 目录(官方镜像为${BUILD_ROOT}/openssl-3.0.9/lib64) | 标准库与 STDX 链接 OpenSSL 3+ |
ARCH/CANGJIE_VERSION/STDX_VERSION/SDK_NAME | x86_64/1.0.0/1/ohos-aarch64 | 决定产物命名与打包目录名 |
--target | ohos-aarch64 | 目标平台标识 |
--target-lib | runtime 输出目录、${OPENSSL_PATH} | 链接依赖库的搜索路径(可多次传入) |
--product | cjc/libs | 编译器仓库中指定构建 cjc 可执行文件或其依赖库 |
--build-cjdb | — | 在构建 cjc 的同时构建调试器 |
--no-tests | — | 跳过测试目标构建 |
CANGJIE_STDX_PATH | .../cangjie_stdx/target/linux_ohos_aarch64_cjnative/static/stdx | 指向构建好的 STDX 静态库 |
按 doc_en/linux_cross_ohos.md 的完整流程执行完环境准备、四仓库源码获取、六大构建步骤、两次打包与一次 Hello 验证后,即可得到可分发的cangjie-sdk-ohos-aarch64-<版本>.tar.gz与cangjie-stdx-ohos-aarch64-<版本>.<STDX版本>.zip。如需构建包含 cjlint、cjcov、lspserver 等更多组件的完整linux-ohosSDK,可参考同仓库的 doc_en/linux_ohos.md;若需同时构建 Windows 目标的组合,则参考 doc_en/linux_cross_windows_ohos.md。
- 文档
- 教程
- 构建工具
【免费下载链接】cangjie_build
仓颉SDK集成构建指导书。
相关推荐
cangjie_build 中的仓颉 SDK Linux 原生构建完整指南:环境搭建、组件编译到打包验证
cangjie_build 中的仓颉 SDK Linux 原生构建完整指南:环境搭建、组件编译到打包验证 本文基于 cangjie_build 仓库中的 Lin
文档教程构建工具IceCubesApp 深度拆解:SwiftUI 驱动的多平台 Mastodon 客户端——从架构到落地的完整解读
IceCubesApp 深度拆解:SwiftUI 驱动的多平台 Mastodon 客户端——从架构到落地的完整解读 开篇速览:纯 SwiftUI 写成的 Mas
移动开发社交scrcpy 安卓投屏完整教程:免 Root,5 分钟用键鼠控制手机
scrcpy 安卓投屏完整教程:免 Root,5 分钟用键鼠控制手机 scrcpy 是一款免费开源的工具,专门解决安卓手机投屏到电脑这件事:把手机屏幕实时镜像到
音视频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考