示例
源码
- 源码 add.c
int add(int a, int b) { return a+b; }
- 源码 main.c
#include <stdio.h> extern int add(int a, int b); int main(int argc, char *argv[]) { printf("test %d", add(1, 2)); return 0; }
编译
- 编译成 *.o 文件
clang++.exe --target=aarch64-linux-ohos \ --gcc-toolchain=D:/Huawei/SDK/native/2.0.1.93/llvm \ --sysroot=D:/Huawei/SDK/native/2.0.1.93/sysroot \ -Dhello_EXPORTS -g -fdata-sections -ffunction-sections \ -funwind-tables -fstack-protector-strong -no-canonical-prefixes \ -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security \ -O0 -fno-limit-debug-info -fPIC -o add.o -c add.c
- 编译成动态库
clang.exe --target=aarch64-linux-ohos \ --gcc-toolchain=D:/Huawei/SDK/native/2.0.1.93/llvm \ --sysroot=D:/Huawei/SDK/native/2.0.1.93/sysroot \ add.o -shared -fPIC \ --rtlib=compiler-rt -fuse-ld=lld -Wl,--build-id=sha1 \ -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lunwind \ -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack \ -o libtest.so
- 编译程序
clang --target=aarch64-linux-ohos \ --gcc-toolchain=D:/Huawei/SDK/native/2.0.1.93/llvm \ --sysroot=D:/Huawei/SDK/native/2.0.1.93/sysroot \ --rtlib=compiler-rt -fuse-ld=lld -Wl,--build-id=sha1 \ -Wl,--warn-shared-textrel \ -Wl,--fatal-warnings -lunwind -Wl,--no-undefined \ -Qunused-arguments -Wl,-z,noexecstack \ -L./ -ltest main.c -o main