Android NDK: ссылка с использованием предварительно скомпилированной статической библиотеки

Я пытаюсь передать Jnetpcap на Android, чтобы использовать его для разбора файлов .pcap. Jnetpcap представляет собой оболочку java для libpcap, которая использует JNI. Я скомпилировал libpcap как статическую библиотеку, используя дерево исходного кода Android.

При компиляции Jnetpcap в качестве общей библиотеки я получаю ошибки, потому что мне нужно установить связь с libpcap.a, но я не знаю, как я могу сказать Android.mk, что он должен связываться с файлом libpcap.a, который у меня есть.

Использование «LOCAL_STATIC_LIBRARIES: = libpcap» не будет работать, потому что libpcap не появляется по умолчанию в андроиде NDK.

Если бы кто-нибудь из вас, ребята, мог мне помочь, я был бы очень благодарен.

Вот мой текущий файл Android.mk:

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) 

Solutions Collecting From Web of "Android NDK: ссылка с использованием предварительно скомпилированной статической библиотеки"

Вы должны создать pcap как статический модуль. Что-то вроде этого

 include $(CLEAR_VARS) LOCAL_MODULE := pcap LOCAL_CFLAGS := declare_flags LOCAL_C_INCLUDES := declare_include LOCAL_SRC_FILES := src_files include $(BUILD_STATIC_LIBRARY) 

Это build pcap как локальный модуль, который вы могли бы связать с LOCAL_STATIC_LIBRARIES

просто добавь

 LOCAL_STATIC_LIBRARIES := pcap 

Перед вызовом

 include $(BUILD_SHARED_LIBRARY) 

Наконец решил. Мой Android.mk код:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libpcap LOCAL_SRC_FILES := libpcap.a include $(PREBUILT_STATIC_LIBRARY) 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/MyApp/jni/libpcap LOCAL_STATIC_LIBRARIES := libpcap include $(BUILD_SHARED_LIBRARY)