怎样看库已经被编绎到KERNEL中啦
在 内核的 makefile 里面加入库文件,例如:
obj-$(CONFIG_TOUCHSCREEN_ICN838X) +=icn838x_ts_iic.o
icn838x_ts_iic-objs := icn838x_iic_ts.o icn838x_iic_slave.o lib.a
[DESCRIPTION]
有些第3方驱动只释放了lib库文件,因此编译上需要额外处理
[KEYWORD]
kernel
第3方lib库
编译
build
[SOLUTION]
注意:只能讲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 := xxx.o yyy.o test.a
以上表示将xxx.c/yyy.c和test.a编译到kernel
然后将test.a文件复制到该目录下并重新命名为test.a_shipped
重新编译kernel即可。
说明:对于kernel的Makefile编写规则说明,可以到网络搜索相关材料参考,比如obj-y表示要编译到kernel,而obj-m表示要编译成module,obj-n或obj-表示不编译
问题按上述方法解决
obj-y += ft_gesture_lib.a
$(obj)/ft_gesture_lib.a:$(srctree)/../$(obj)/ft_gesture_lib
cp $(srctree)/../$(obj)/ft_gesture_lib $(obj)/ft_gesture_lib.a
makefile位置
mediatek\custom\common\kernel
obj-y += ft_gesture_lib.a
$(obj)/ft_gesture_lib.a:$(srctree)/../$(obj)/ft_gesture_lib
cp $(srctree)/../$(obj)/ft_gesture_lib $(obj)/ft_gesture_lib.a