# ninja-ohos **Repository Path**: Kaiter-Plus/ninja-ohos ## Basic Information - **Project Name**: ninja-ohos - **Description**: 可编译到开源鸿蒙系统上的 Ninja 构建工具 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 备注 **本文都以`x86_64`架构为例,如果你为其它架构,比如`aarch64`,注意修改命令行中的`x86_64`字段。** ## 前置条件 ### 1. 设置 OHOS_SDK 环境变量: ```bash export OHOS_SDK= ``` 比如我的在`~/ohos/sdk/native`,那就可以设置: ```bash export OHOS_SDK=~/ohos/sdk/native ``` ### 2. 复制缺失的动态库 将`libc++_shared.so`复制到`$OHOS_SDK/sysroot/usr/lib/-linux-ohos`下,补全动态库: ```bash cp $OHOS_SDK/sysroot/usr/lib/-linux-ohos/ ``` 比如我的`SDK`的位置是`~/ohos/sdk/native`,`libc++_shared.so`所在位置为`~/ohos`,然后我想补全`x86_64`架构的,则执行下列命令: ```bash cp ~/ohos/libc++_shared.so $OHOS_SDK/sysroot/usr/lib/x86_64-linux-ohos/ ``` ## Ninja ### 1. 进入`ninja`源码根目录: ```bash cd ``` 比如我的位置在`~/ohos/build/ninja`下,那就可以: ```bash cd ~/ohos/build/ninja ``` ### 2. 新建`build`文件夹(如果之前编译过,先删除之前的编译产物),用于放构建产物: ```bash rm -rf build && mkdir build && cd build ``` ### 3. 用 CMake 交叉编译,生成中间产物: ```bash $OHOS_SDK/build-tools/cmake/bin/cmake .. \ -G Ninja \ -DCMAKE_C_COMPILER=$OHOS_SDK/llvm/bin/clang \ -DCMAKE_CXX_COMPILER=$OHOS_SDK/llvm/bin/clang++ \ -DCMAKE_TOOLCHAIN_FILE=$OHOS_SDK/build/cmake/ohos.toolchain.cmake \ -DOHOS_ARCH=x86_64 \ -DOHOS_PLATFORM=OHOS \ -DCMAKE_BUILD_TYPE=Release \ -DNINJA_BUILD_BINARY=ON \ -DBUILD_TESTING=OFF ``` ### 4. 编译最终产物: ```bash $OHOS_SDK/build-tools/cmake/bin/cmake --build . -- -j$(nproc) ``` 编译完成,在当前`build`文件夹下的`ninja`就是最终产物了. ### PS:静态链接编译 另外如果需要使用静态链接编译,将第三步命令换成一下命令即可,执行完成后继续执行第四步即可: ```bash $OHOS_SDK/build-tools/cmake/bin/cmake .. \ -G Ninja \ -DCMAKE_C_COMPILER=$OHOS_SDK/llvm/bin/clang \ -DCMAKE_CXX_COMPILER=$OHOS_SDK/llvm/bin/clang++ \ -DCMAKE_TOOLCHAIN_FILE=$OHOS_SDK/build/cmake/ohos.toolchain.cmake \ -DOHOS_ARCH=x86_64 \ -DOHOS_PLATFORM=OHOS \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXE_LINKER_FLAGS="-static" \ -DNINJA_BUILD_BINARY=ON \ -DBUILD_TESTING=OFF ```