android 如何添加第3方lib库到kernel中

注意:只能将lib库放在kernel编译到的地方,如下:

alps/kernel/

alps/mediatek/custom/common/kernel/

alps/mediatek/custom/$platform/kernel/

alps/mediatek/custom/$proj/kernel/

alps/mediatek/kernel/

alps/mediatek/platform/$platform/kernel/core/

alps/mediatek/platform/$platform/kernel/drivers/

假设第3方库名称为test.a

(1). 如果存放的目录存在Makefile,那么只需在该Makefile最后添加:

obj-y += test.a

然后将test.a文件复制到该目录下,

重新命名为test.a_shipped,目的是防止clean kernel阶段把该库给清除掉!

重新编译kernel即可。

(2). 如果存放的目录不存在Makefile,比如在alps/mediatek/custom/目录下的kernel目录都没有Makefile,这时需要自行添加一个Makefile,内容和第1种方法差不多:

obj-y := xxx.o yyy.o test.a

以上表示将xxx.c/yyy.c和test.a编译到kernel

然后将test.a文件复制到该目录下并重新命名为test.a_shipped

重新编译kernel即可。

注意:alps/mediatek/custom/common/kernel/touchpanel/xxx目录下的文件会和alps/mediatek/custom/common/kernel/touchpanel/src目录合并,obj-y要将两个目录下的obj全部加入才行,否则编译失败。也可以用以下Makefile,自动将所有obj加入obj-y,省却麻烦。其他目录如有类似的情形一样处理。

添加的Makefile(将所有*.c变为*.o并加入obj-y):

include $(MTK_PATH_BUILD)/common.mk

path := $(if $(filter yes,$(KBUILD_OUTPUT_SUPPORT)),$(srctree)/$(obj),$(obj))

obj-y := $(patsubst %.c,%.o,$(subst $(path)/,,$(call wildcard2,$(path)/*.c)))

obj-y += test.a

说明:对于kernel的Makefile编写规则说明,可以到网络搜索相关材料参考,比如obj-y表示要编译到kernel,而obj-m表示要编译成module,obj-n或obj-表示不编译

时间: 2024-08-09 01:18:29

android 如何添加第3方lib库到kernel中的相关文章

android adt升级到版本22后,就无法再向lib库里面添加jar了

目前有一个android app 大项目,引用了很多的类库,一直运行的好好的,今天我把Eclipse ADT插件升级到了最新版本(v22),同时把sdl也升级了.在整个 升级过程中很好,没有任何问题,当我达成apk在手机上运行时,报错了NoClassDefFoundError java.lang.NoClassDefFoundError:org.acra.ACRA .... 该ARCA库一斤包含到了lib库里面了,我能在Android Private Libraries 中看到,并且编译错误.在

Android.mk添加本地程序和库的经常使用模版

Android.mk添加本地程序和库的经常使用模版 Android中添加本地程序或者库.这些程序和库与其所在路径没有关系.仅仅与它们的配置文件Android.mk有关.Android.mk文件里可以主要包括一些系统公共的宏.在一个Android.mk中可以生成多个可运行程序.动态库或者静态库. A,编译C/C++应用程序的模板 #Demo Exe LOCAL_PATH := $(call my-dir) #include $(CLEAR_VARS) LOCAL_SRC_FILES:= main.

cocos2d-x3.2如何添加LIb库及头文件的步骤

在VS工程中,添加c/c++工程中外部头文件及库的基本步骤: 1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. 2.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录. 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 3.添加工程引用的dll动态库:把引用的dll放到工程的可执行文件

VS2013如何添加LIb库及头文件的步骤

在VS工程中,添加c/c++工程中外部头文件及库的基本步骤: 1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. 2.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录.         然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 3.添加工程引用的dll动态库:把引用的dll放到

vs2012引入新lib-----附cocos2dx3.2 http通信lib库添加

先说说普通的两种方法(请直接只用方法3来添加): 方法1:  通过设置工程配置来添加lib库. 转自网上: A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录. C  然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 这种方法比较繁

在VS中添加lib库的三种方法

注意:每种方法也要复制相应的DLL文件到相应目录 方法1:  通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录.C  然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 这种方法比较繁琐,且不直观,

Android so lib库远程http下载和动态注册

一.背景 在开发Android应用程序的实现,有时候需要引入第三方so lib库,但第三方so库比较大,例如开源第三方播放组件ffmpeg库, 如果直接打包的apk包里面, 整个应用程序会大很多.经过查阅资料和实验,发现通过远程下载so文件,然后再动态注册so文件时可行的.主要需要解决下载so文件存放位置以及文件读写权限问题. 二.主要思路   1.首先把so放到网络上面,比如测试放到:http://codestudy.sinaapp.com/lib/test.so 2.应用启动时,启动异步线程

VS2010中添加lib库引用

一.VS2010中添加lib库引用:1 菜单  项目---> 属性--->配置属性-->链接器---->输入---附加依赖项,  加入库名,如: my_API.lib; 或是在cpp源文件中用代码#pragma comment(lib,"my_API.lib")代替. 此时再编译会提示错误:fatal error LNK1104: 无法打开文件"my_API.lib" ,  原因应该是编译器不知道去哪里找我们的这个库,下面就来解决2 然后给项

visual studio添加lib库

方法1: 通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录. C 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名. 这种方法比较繁琐,且不直观,而且还可能要争对debug版本和release版本作