0

我正在尝试学习 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

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

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

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

4

1 回答 1

0

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

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

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

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

Android 是基于 Linux 的,因此适用于 Linux 的“pcap-*.c”文件是“pcap-linux.c”也就不足为奇了。“pcap-snoop.c”是适用于 SGI IRIX 的“pcap-*.c”文件;除非有人在 IRIX 上编译,否则永远不要尝试编译它,或者如果可能的话,为 IRIX 进行交叉编译。

于 2015-07-01T19:24:56.473 回答