net / raw.h使用NDK r10e编译Android PCAP(jnetpcap)时没有这样的文件或目录

时间:2015-06-30 16:17:40

标签: android android-ndk libpcap jnetpcap

我正在尝试学习Android-NDK,因此我尝试修改现有示例,因此我尝试从Android-PCAP构建apk但无法执行此操作,并收到此错误消息

    Information:Gradle tasks [:app:assembleDebug]
    WARNING [Project: :app] Current NDK support is deprecated.  Alternative will be provided in the future.
    :app:preBuild UP-TO-DATE
    :app:preDebugBuild UP-TO-DATE
    :app:checkDebugManifest
    :app:preReleaseBuild UP-TO-DATE
    :app:prepareComAndroidSupportGridlayoutV71800Library UP-TO-DATE
    :app:prepareDebugDependencies
    :app:compileDebugAidl UP-TO-DATE
    :app:compileDebugRenderscript UP-TO-DATE
    :app:generateDebugBuildConfig UP-TO-DATE
    :app:generateDebugAssets UP-TO-DATE
    :app:mergeDebugAssets UP-TO-DATE
    :app:generateDebugResValues UP-TO-DATE
    :app:generateDebugResources UP-TO-DATE
    :app:mergeDebugResources UP-TO-DATE
    :app:processDebugManifest UP-TO-DATE
    :app:processDebugResources UP-TO-DATE
    :app:generateDebugSources UP-TO-DATE
    :app:processDebugJavaRes UP-TO-DATE
    :app:compileDebugJava UP-TO-DATE
    :app:compileDebugNdk
    /home/nika/workspace/android-pcap/app/src/main/jni/libpcap/pcap-snoop.cpp:36:21: fatal error: net/raw.h: No such file or directory
     #include <net/raw.h>
               ^
    compilation terminated.
    make: *** [/home/nika/workspace/android-        pcap/app/build/intermediates/ndk/debug/obj/local/arm64-        v8a/objs/pcap//home/nika/workspace/android-pcap/app/src/main/jni/libpcap/pcap-snoop.o] Error 1
    Error:Execution failed for task ':app:compileDebugNdk'.
    > com.android.ide.common.process.ProcessException:         org.gradle.process.internal.ExecException: Process 'command '/opt/android-ndk/ndk-build'' finished with non-zero exit value 2
    Information:BUILD FAILED
    Information:Total time: 8.645 secs
    Information:1 error
    Information:0 warnings
    Information:See complete output in console

无论如何我能解决这个错误吗?任何帮助将不胜感激。

在此之前,我在this question中提到了错误。但后来我将文件从c重命名为cpp,解决了这个问题。

我在Linuxmint 17.1上使用的是Android Studio 1.2.2和Android NDK r10e。 :)

1 个答案:

答案 0 :(得分:0)

  

无论如何我能解决这个错误吗?

请勿尝试编译pcap-snoop.c - 并且不要将其重命名为pcap-snoop.cpp并尝试编译它。

Libpcap是一个多平台库,支持许多不同的操作系统。各个UN * Xes为捕获数据包提供的机制对于不同的UN * Xes是不同的。 * BSD,OS X / iOS,AIX和Solaris 11及更高版本具有BPF; Linux有SOCK_PACKET和PF_PACKET套接字;其他UN * Xes有其他机制。

Libpcap提供了一个API,试图隐藏与应用程序的差异。 &#34; pcap - *。c&#34;文件是特定捕获机制的模块,当编译libpcap以在特定操作系统上运行时,只有适当的&#34; pcap - * .c&#34;应编译该操作系统的文件。

Android是基于Linux的,适当的&#34; pcap - *。c&#34;毫不奇怪,Linux的文件&#34; pcap-linux.c&#34;。 &#34; PCAP-snoop.c&#34;是适当的&#34; pcap - *。c&#34; SGI的IRIX文件;一个人应该从不尝试编译它,除非有人在IRIX上编译,或者,如果可能的话,为IRIX进行交叉编译。