如果厂商提供了一个静态库,如何编译进系统呢,可参考
external/demo/Android.bp
cc_prebuilt_library_static {
name: "hub",
compile_multilib: "both",
multilib: {
lib32: {
srcs: ["hub.a"],
},
lib64: {
srcs: ["hub.a"],
},
},
}
cc_binary {
name: "demo",
srcs: ["demo.c"],
static_libs: [
"hub",
],
cflags: [
"-Werror",
"-Wno-unused-parameter",
"-Wno-unused-variable",
],
}
external/demo/demo.c
#include <stdio.h>
extern int sub(int a,int b);
int main(int argc, char *argv[])
{
printf("ret=%d\n",sub(100,0));
return 0;
}
如何生成hub.a
external/demo/hub.c
int sub(int a,int b){
return a-b;
}
运行如下命令生成hub.a
./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-gcc external/demo/hub.c -o external/demo/hub.o -c
./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-ar rcs external/demo/hub.a external/demo/hub.o
预编译可执行文件
cc_prebuilt_binary {
name: "etf",
vendor: true,
srcs: ["etf"],
}
编译静态库并链接至Android项目
本文详细介绍了如何将一个静态库编译并整合到Android项目中,包括使用Android.bp配置静态库和可执行文件,以及具体的GCC编译命令。通过实例演示了hub.a静态库的生成过程和如何在demo.c中调用其函数。
7999





