我正在尝试在仅Android nexus-7 wifi平板电脑(代码名称:grouper)上运行packetspammer应用程序。我下载了libpcap库,并能够生成静态库(libpcap.a)。但是,当我尝试使用NDK-build构建packetspammer应用程序时,我不断收到链接器错误。
我的文件夹结构如下所示:
packetspammer
|
jni
|
packetspammer source files
Android.mk file that links in libpcap and builds the packetspammer binary
<Directory>platform_external_libpcap
|
libpcap.a file
这是我的android.mk文件:
#Links the libpcap library
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := platform_external_libpcap/libpcap
LOCAL_SRC_FILES := platform_external_libpcap/libpcap.a
LOCAL_EXPORT_C_INCLUDES := platform_external_libpcap
include $(PREBUILT_STATIC_LIBRARY)
#Builds packetspammer app
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_MODULE := packetspammer
LOCAL_SRC_FILES := radiotap.c packetspammer.c
LOCAL_STATIC_LIBRARIES := platform_external_libpcap/libpcap.a
LOCAL_C_INCLUDES := ~/android/android-ndk-r10b/platforms/android-L/arch-arm/usr/include \
~/packetspammer/jni/platform_external_libpcap
TARGET_ARCH := arm
include $(BUILD_SHARED_LIBRARY)
这些是我收到的错误消息:
error: undefined reference to 'pcap_open_live'
error: undefined reference to 'pcap_datalink'
error: undefined reference to 'pcap_compile'
error: undefined reference to 'pcap_geterr'
error: undefined reference to 'pcap_setfilter'
error: undefined reference to 'pcap_geterr'
error: undefined reference to 'pcap_freecode'
error: undefined reference to 'pcap_setnonblock'
error: undefined reference to 'pcap_next_ex'
error: undefined reference to 'pcap_inject'
您能告诉我Android.mk文件或我遵循的过程有什么问题吗?我查看了NDK程序员指南,并遵循“ Building / Standalone工具链”一节以及“ Building / Android.mk”一节。即使使用独立工具链,我也会遇到相同的链接器错误。
在被困在这里之前,我发现了很多帖子可以帮助我解决一些错误。以下是这些链接:
我能够解决此问题。我遵循了这个SO问题中的公认答案(使用android ndk编译libpcap),并从该站点下载了libpcap 。
我编译并构建了libpcap.a静态库,将其链接到packetspammer android.mk文件中,并获得了最终的可执行文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句