Android下移植libnetfilter_conntrack库【android-17/anroid4.2.2】
背景 :
anroid提供的libc非gnu标准c库,且不同的版本的libc头文件和kernel头文件是不相同的。libnetfilter_conntrack是防火墙的第三方库,支持内核中获取conntracklist。
问题:
1. 直接编译libnetfilter_conntrack,系统提示如下错误:
解决方法:拷贝anroid-21版本的icmpv6.h到anroid-17的对应路径下。
2. 编译显示对应的宏变量__sum16不存在,系统提示如下错误:
解决方法:在icmpv6.h的头部添加宏定义typedef __u16__bitwise __sum16;
3 函数定义不存在,系统提示如下错误undefinedreference to '__fswab64'
解决方法:进行对应函数的静态联编,从高版本内核中拷贝对应函数的实现。(需要删除前期已经生产的obj和libs文件夹,因为对应的编译文件冲突)
4 执行ndk-build 编译成功。