记录一下,成功在 OpenHarmony 上编译跑通了基于 Seccomp-BPF 的系统调用追踪程序。
虽然并没什么好意外的,毕竟也是 Linux 内核…… 不过这份代码从安卓移植过来十分顺利,几乎只需要把 android/log.h
和 jni.h
删掉就行,当然也有代码本身就比较简单的原因吧。代码因为和公司有些关系,就不放了。
再简单写一下 Windows 上编译 OpenHarmony C/C++ native 程序的过程。开始之前,先保证装好 DevEco Studio IDE,然后下载安装 OpenHarmony SDK(包含 NDK)并设置好环境变量,主要是将 SDK 根目录、NDK 根目录和下面的 build-tools/cmake/bin
加入 PATH
变量。
首先,组织好源代码的目录结构,参考官方仓库的例子。例如,如果要编译一个 C++ 可执行程序(而非链接库),参考里面的 cpphello
;如果要编译动态链接库(.so),参考 shared_library
。
其次,编写源代码。
再次,编写/修改 CMakeLists.txt
文件,主要是指定要参与编译的源文件和链接方式,参考离北况归大佬的文章。
最后,在项目根目录下创建 compile.bat
,内容如下,保存运行(%OHOS_NDK_HOME%
是 NDK 根目录,OHOS_STL
设为 c++_static
表示静态链接 libc++.so
):
|
|
产物在 build\output
中。