Android NDK: Link mit einer vorkompilierten statischen Bibliothek

Ich versuche, Jnetpcap auf Android zu portieren, um es zum Parsen von .pcap-Dateien zu verwenden. Jnetpcap ist ein Java-Wrapper für libpcap, der JNI verwendet. Ich habe libpcap als statische Bibliothek mit dem Quellcodebaum des androiden kompiliert.

Bei der Kompilierung von Jnetpcap als eine gemeinsame Bibliothek bekomme ich Fehler, weil ich mit libpcap.a verknüpfen muss, aber ich weiß nicht, wie könnte ich Android sagen, dass er mit der Datei libpcap.a verknüpfen muss, die ich habe.

Mit "LOCAL_STATIC_LIBRARIES: = libpcap" wird nicht funktionieren, weil libpcap nicht standardmäßig im Android NDK kommt.

Wenn irgendjemand von euch Jungs mir helfen könnte, wäre ich sehr dankbar.

Hier ist meine aktuelle Android.mk Datei:

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) 

  • Android NDK, zwei statische Bibliotheken und Linking
  • Android Linker: undefined Verweis auf bsd_signal
  • Android NDK statische Bibliothek Debugging (fusionieren Projekte?)
  • Erstellen von Android-Bibliothekspaket einschließlich externes (Native oder Java) Paket
  • FFMPEG für Android-Toolkains: arm-linux-armeabi-eabi-pkg-config - gibt es irgendeine Toolchain in Existenz mit dem pkg-config Tool
  • Android Studio + Volley
  • 2 Solutions collect form web for “Android NDK: Link mit einer vorkompilierten statischen Bibliothek”

    Sie müssen pcap als statisches Modul erstellen. Etwas wie das

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

    Diese bau pcap als lokales Modul, das du mit LOCAL_STATIC_LIBRARIES verknüpfen kannst

    einfach hinzufügen

     LOCAL_STATIC_LIBRARIES := pcap 

    Vor dem rufen

     include $(BUILD_SHARED_LIBRARY) 

    Schließlich gelöst. Mein Android.mk Code:

     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) 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.