在工程目录的模块目录下,创建build目录,用来放置CMake构建时产生的中间文件。注意:ohos-sdk是下载下来的SDK的根目录,开发者需要自行替换成实际的下载目录。有没有相关代码可以实现这个功能呢?
harmonyos
用OHOS_STL=c++_static静态链接c++库方式构建工程,当OHOS_ARCH=armeabi-v7a会编译32位静态库,而当OHOS_ARCH=arm64-v8a会编译64位静态库。我在学习鸿蒙中,遇到了一个问题怎么理解呢?
您需要先 登录 才能评论/回答
全部评论(1)
编译构建demo工程
linux 和 mac 系统环境下
在工程目录的模块目录下,创建build目录,用来放置CMake构建时产生的中间文件。注意:ohos-sdk是下载下来的SDK的根目录,开发者需要自行替换成实际的下载目录。
-
采用OHOS_STL=c++_shared动态链接c++库方式构建工程,如不指定,默认采用c++_shared;OHOS_ARCH参数可根据系统架构来决定具体值,例如当OHOS_ARCH=armeabi-v7a会编译32位动态库,而当OHOS_ARCH=arm64-v8a会编译64位动态库。
mkdir build && cd build
cmake -D OHOS_STL=c++_static -D OHOS_ARCH=arm64-v8a -D OHOS_PLATFORM=OHOS -D CMAKE_TOOLCHAIN_FILE={ohos-sdk}/linux/native/build/cmake/ohos.toolchain.cmake ..
cmake --build .
-
命令中,OHOS_ARCH与OHOS_PLATFORM两个变量最终会生成clang++的--target命令参数,在此例子中就是--target=arm-linux-ohos和--march=arm64-v8a两个参数。
CMAKE_TOOLCHAIN_FILE指定了toolchain文件,在此文件中默认给clang++设置了--sysroot={ndk_sysroot目录},告诉编译器查找系统头文件的根目录。
注意
动态链接在运行时加载库文件,能有效节省磁盘空间和内存,但也增加运行时加载开销,略微影响启动性能。静态链接则将库代码直接嵌入可执行文件,启动快,但生成的文件体积更大,适合对启动性能敏感或运行环境受限的场景,不适用于对磁盘空间敏感的应用或设备。
2026-08-23 00:44:31