Android的NDK:链接使用pre-编译静态库 [英] Android NDK: Link using a pre-compiled static library
问题描述
我试图端口Jnetpcap到Android为了用它来解析.pcap文件。 Jnetpcap是一个Java包装libpcap的,它使用JNI。我已经使用了Android的源$ C $ C树编译libpcap的是一个静态库。
在编译Jnetpcap作为共享库我收到错误,因为我有libpcap.a链接,但我不知道我怎么能告诉Android.mk,他必须与我有libpcap.a文件链接
使用LOCAL_STATIC_LIBRARIES:= libpcap的,将无法正常工作,因为libpcap的不来默认情况下,在Android NDK
如果任何你们的可以帮助我,我将非常感激。
下面是我当前的Android.mk文件:
包括/home/sergio/workspace/MyApp/jni/libpcap/Android.mk
LOCAL_PATH:= $(叫我-DIR)
包括$(CLEAR_VARS)
LOCAL_MODULE:= jnetpcap
LOCAL_SRC_FILES:= \
jnetpcap.cpp \
packet_flow.cpp \
packet_jheader.cpp \
jnetpcap_pcap_header.cpp \
nio_jbuffer.cpp \
winpcap_stat_ex.cpp \
winpcap_send_queue.cpp \
winpcap_ext.cpp \
jnetpcap_ids.cpp \
jnetpcap_dumper.cpp \
jnetpcap_utils.cpp \
util_in_cksum.cpp \
jnetpcap_beta.cpp \
nio_jmemory.cpp \
packet_jsmall_scanner.cpp \
packet_protocol.cpp \
nio_jnumber.cpp \
packet_jheader_scanner.cpp \
library.cpp \
packet_jscan.cpp \
jnetpcap_pcap100.cpp \
util_checksum.cpp \
packet_jpacket.cpp \
winpcap_ids.cpp \
jnetpcap_bpf.cpp
LOCAL_C_INCLUDES:= /家庭/塞尔吉奥/ Android的NDK-R5B /平台/ Android为8 /弓臂/ usr / include目录的/ home /塞尔吉奥/工作区/鲨鱼/ JNI / libpcap的
LOCAL_STATIC_LIBRARIES:= libpcap的
包括$(BUILD_SHARED_LIBRARY)
您必须建立PCAP为静态模块。事情是这样的。
包括$(CLEAR_VARS)
LOCAL_MODULE:= PCAP
LOCAL_CFLAGS:= declare_flags
LOCAL_C_INCLUDES:= declare_include
LOCAL_SRC_FILES:= src_files
包括$(BUILD_STATIC_LIBRARY)
该版本PCAP当地的模块,你可以用LOCAL_STATIC_LIBRARIES链接
只是添加
LOCAL_STATIC_LIBRARIES:= PCAP
在调用之前
包括$(BUILD_SHARED_LIBRARY)
I'm trying to port Jnetpcap to Android in order to use it for parsing .pcap files. Jnetpcap is a java wrapper for libpcap which uses JNI. I have compiled libpcap as a static library using the android's source code tree.
When compiling Jnetpcap as a shared library I'm getting errors because I have to link with libpcap.a but I don't know how could I tell Android.mk that he must link with the libpcap.a file that I have.
Using "LOCAL_STATIC_LIBRARIES:= libpcap" won't work because libpcap doesn't come by default in the android NDK.
If any of you guys could help me I would be very thankful.
Here is my current Android.mk file:
include /home/sergio/workspace/MyApp/jni/libpcap/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jnetpcap
LOCAL_SRC_FILES :=\
jnetpcap.cpp\
packet_flow.cpp\
packet_jheader.cpp\
jnetpcap_pcap_header.cpp\
nio_jbuffer.cpp\
winpcap_stat_ex.cpp\
winpcap_send_queue.cpp\
winpcap_ext.cpp\
jnetpcap_ids.cpp\
jnetpcap_dumper.cpp\
jnetpcap_utils.cpp\
util_in_cksum.cpp\
jnetpcap_beta.cpp\
nio_jmemory.cpp\
packet_jsmall_scanner.cpp\
packet_protocol.cpp\
nio_jnumber.cpp\
packet_jheader_scanner.cpp\
library.cpp\
packet_jscan.cpp\
jnetpcap_pcap100.cpp\
util_checksum.cpp\
packet_jpacket.cpp\
winpcap_ids.cpp\
jnetpcap_bpf.cpp
LOCAL_C_INCLUDES := /home/sergio/android-ndk-r5b/platforms/android-8/arch-arm/usr/include /home/sergio/workspace/Shark/jni/libpcap
LOCAL_STATIC_LIBRARIES := libpcap
include $(BUILD_SHARED_LIBRARY)
You have to build pcap as static module. Something like this
include $(CLEAR_VARS)
LOCAL_MODULE := pcap
LOCAL_CFLAGS := declare_flags
LOCAL_C_INCLUDES := declare_include
LOCAL_SRC_FILES := src_files
include $(BUILD_STATIC_LIBRARY)
This build pcap as local module which you could link with LOCAL_STATIC_LIBRARIES
just add
LOCAL_STATIC_LIBRARIES := pcap
before calling
include $(BUILD_SHARED_LIBRARY)
这篇关于Android的NDK:链接使用pre-编译静态库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!