东莞高端品牌网站建设价格自己做网站需要做啥
web/
2025/10/3 16:27:21/
文章来源:
东莞高端品牌网站建设价格,自己做网站需要做啥,用discuz做的门户网站,标志设计logo网站Android.mk是Android提供的一个makefile文件#xff0c;可以将源文件分组为模块。用来引用的头文件目录、需要编译的*.c/.cpp文件、jni源文件、指定编译生成.so共享库文件或者*.a静态库文件#xff0c;可以定义一个或多个模块#xff0c;也可以多个模块中使用同一个源文件可以将源文件分组为模块。用来引用的头文件目录、需要编译的*.c/.cpp文件、jni源文件、指定编译生成.so共享库文件或者*.a静态库文件可以定义一个或多个模块也可以多个模块中使用同一个源文件
Android.mk文档
Android.mk的官方文档https://developer.android.google.cn/ndk/guides/android_mk在NDK中的文档路径ndk目录下docs中的ANDROID-MK.html文档eg:android-ndk-r9d/docs/ANDROID-MK.html;
基础知识 1.LOCAL_PATH : $(call my-dir) 每个Android.mk文件都以LOCAL_PATH开始Build System提供的宏函数 my-dir此变量返回包含的makefile的路径CLEAR_VARS不会清楚LOCAL_PATH变量
NDK提供的宏函数 2. include $(CLEAR_VARS) CLEAR_VARS变量由Build System提供并指向一个特定的GNU Makefile可为你清除LOCAL_xxx变量但不会清除LOCAL_PATH变量 因系统在单一GNU Make执行环境中解析所有构建控制文件LOCAL_xxx变量是全局的所以描述每个模块之前声明此变量可以清除所有了LOCAL_xxx这样清理后避免相互影响
3.LOCAL_MODULE 此变量声明模块名称名称必须唯一且不含任何空格 Build System在生成最终共享库文件时会将lib作为前缀模块名称.so作为共享库文件名称 egLOCAL_MODULE : ffmpeg-decoder 模块名称为ffmpeg-decoder生成共享库为libffmpeg-decoder.so 4. LOCAL_SRC_FILES : FFmpegDecoder.cpp FFmpegConfigure.cpp 此变量必须包含要构建到模块中的C/C源文件列表不需要列出头文件和包含文件系统会自动导入依赖 eg: LOCAL_SRC_FILES : FFmpegDecoder.cpp FFmpegConfigure.cpp 5. LOCAL_C_INCLUDES 变量设置头文件的include目录列表 eg: LOCAL_C_INCLUDES (LOCALPATH)/include6.LOCALLDLIBS此变量包含构建共享库或可执行文件时链接库使用−l前缀传递特定系统库的名称多个链接库之间使用空格作为分隔符NDK为Android版本提供新的头文件和库文件路径(LOCAL_PATH)/include 6. LOCAL_LDLIBS 此变量包含构建共享库或可执行文件时链接库使用-l前缀传递特定系统库的名称多个链接库之间使用空格作为分隔符 NDK为Android版本提供新的头文件和库文件路径(LOCALPATH)/include6.LOCALLDLIBS此变量包含构建共享库或可执行文件时链接库使用−l前缀传递特定系统库的名称多个链接库之间使用空格作为分隔符NDK为Android版本提供新的头文件和库文件路径NDK/platforms/android-//usr/include下 -llog链接到系统的liblog.so文件应用可以定义从原生代码向内核发送日志消息路径/system/lib/liblog.so其实是导入android/log.h头文件路径$NDK/platforms/android-3/arch-arm/usr/include/android/log.h
变量列表 -llog(日志库)导入log.h头文件 -lz(ZLib压缩库)添加zlib.h和zconf.h头文件 -ldl(动态链接器库)添加dlfcn.h头文件可以访问Android动态链接器的dlopen()、dlsym()和dlclose()函数 -lGLESv3(OpenGL ES3.1库)此变量API 21开始添加gl31.h和gl3ext.h头文件提供了渲染机制参考EGL原生平台接口从API 9开始提供EGL API,可以使用GLSurfaceView; -ljnigraphics允许C/C以可靠方式访问Java位图对象的像素缓冲区导入bitmap.h头文件jnigraphics工作流程参考NDK API中的jnigraphics; -lOpenMAXAL多媒体库导入OMXAL/OpenMAXAL.h和OMXAL/OpenMAXAL_Platform.h头文件提供原生多媒体处理库 -landroidandroid原生头文件库 原生头文件列表包括native_activity.h、looper.h、input.h、keycodes.h等等如需了解头文件详情参考NDK API参考文档 https://developer.android.google.cn/ndk/guides/stable_apis eg:LOCAL_LDLIBS : -llog -lz 7. LOCAL_SHARED_LIBRARIES : avcodec avdevice 此变量是此模块运行中依赖的共享库模块列表avcodec和avdevice都是前面定义的共享模块库 eg: 8. include $(BUILD_SHARED_LIBRARY) 此变量设置Build System提供的变量执行GNU Makefile脚本表示指定模块的生成方式 BUILD_SHARED_LIBARAY编译为动态库 BUILD_SHARED_LIBRARY编译为动态库.so这里的LOCAL_SRC_FILES的值为.c/.cpp; BUILD_STATIC_LIBRARY编译为静态库.a这里的LOCAL_SRC_FILES的值为*.c/.cpp; BUILD_EXECUTABLE编译为Native C可执行程序 PREBUILT_SHARED_LIBRARY编译为动态库.so与BUILD_SHARED_LIBRARY不同这里LOCAL_SRC_FILES的值不能是源文件而是库文件 PREBUILD_STATIC_LIBRARY编译静态库 9TARGET_PLATFORM、TARGET_ARCH_ABI和TARGET_ABI TARGET_PLATFORM构建系统目标的Android API level eg:TARGET_PLATFORM : android-22 TARGET_ARCH_ABI 此变量将CPU和架构的ABI存储到目标eg:TARGET_ARCH_ABI : arm64-v8a TARGET_ABI设置Android API level和ABI的联结 eg:TARGET_ABI : android-22-arm64-v8a
注Android.mk中的TARGET_xxx与Application.mk中的APP_xxx中的变量设置相似
LOCAL_MODULE_FILENAME 模块只设置LOCAL_MODULE而不设置LOCAL_MODULE_FILENAME就会以“lib”前缀module名称“.so”命名生成的动态库名称如果我们需要自己设置生成动态库名称就可以通过LOCAL_MODULE_FILENAME进行设置LOCAL_CPP_EXTENSION 此变量设置C源文件以外的文件扩展名 egLOCAL_CPP_EXTENSION : .cxx .cpp .cc .c 12.LOCAL_CPP_FEATURES 此变量指明代码依赖于特定的C功能 eg:LOCAL_CPP_FEATURES : rtti exceptions features rtti指明使用RTTI运行时类型信息 exceptions指明代码使用C异常LOCAL_C_INCLUDES 此变量指定相对于NDK root目录的路径列表在编译所有源文件(C、C和Assembly)时添加到include搜索路径LOCAL_ARM_MODE 此变量指定生成ARM目标二进制文件LOCAL_ARM_NEON 此变量设置支持NEON, eg: LOCAL_ARM_NEON : trueLOCAL_THIN_ARCHIVE 此变量设置为true构建静态库时生成一个只包含实际对象的文件路径而不包含对象的库好处是库文件变小了但是不能进行移植因为所有的路径是相对路径.
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86308.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!