使用Android NDK编译libpcap

我一直在做很多尝试,以获得Androidlibpcap编译,我没有看到任何模式或任何值得写下来的进展。

我有一个非常简单的嗅探器(在MIPS linux中工作正常),使用libpcap,所以我想我自己哦,好的…没有biggie …我只是编译Android的libpcap(到最后,Android是只是一个Linux)…这里是问题开始的地方。 我不知道如何使用ndk-buildAndroid.mk以及所有的基础结构来编译libpcap。

我有一个目录中的Android NDK。 NDK有工具链(我在~/Documents/Projects/Android_NDK/toolchains/下有很多目录),但是没有一个工具链可以使用libpcap

我已经尝试了两个不同的libpcap版本或…分支机构:

Android的一个,这是我想要使用的, https://android.googlesource.com/platform/external/libpcap/

和常规的: http : //www.tcpdump.org/release/libpcap-1.5.3.tar.gz

我所做的所有尝试都是非常不成功的。 我已经看到了Android NDK的问题:链接使用预编译的静态库是相似的,但我仍然收到各种错误。

我已经将这些pcap库下载到他们自己的目录中。 也许是这个问题? 我是否需要将Android libpcap放在NDK根目录下的某个目录中并重新创build工具链?

我在MacOSX 10.9.2 64bit上使用NDK-r9。

如果其他人在使用NDK为Android编译libpcap时遇到问题,那么在这里有一个版本为1.5.2的Android.mk文件: https : //android.googlesource.com/platform/external/libpcap.git和说明编译这个使用NDK在这里: http : //ducbh.blogspot.co.uk/2013/12/cross-compile-libpcap-for-android.html 。 我可以使用当前的NDK(r10b)确认这个工作…虽然您可能需要添加AndroidManifest.xml(空白)和指向您的Android.mk文件的Application.mk。

我不认为修改当前libpcap版本(1.6.2)的.mk文件并不难。

请阅读http://blog.umitproject.org/2011/05/libpcap-for-android.html上的优秀文章。 有帮助你链接到libpcap的说明,但最重要的是你不能在非root的Android上使用libpcap 。 所以也许这不值得你的努力。

在一个有根的设备上,你可以简单地安装一个像Shark for Root这样的免费嗅探器。

最后!!

在被非现有的头文件和类似的东西困扰后,我发现这个问题 ,指向一个SVN回购( http://sourceforge.net/p/prueba-android/code/HEAD/tree/trunk/jni/ )与编译的libpcap!

如果其他人想要了解我的Android.mk和目录结构的更多细节,请添加评论,我将扩展此答案。