Compiler errors 关于编译器-l选项(arm linux AndroidABI gcc)

Compiler errors 关于编译器-l选项(arm linux AndroidABI gcc),compiler-errors,android-ndk,Compiler Errors,Android Ndk,使用make命令时(独立工具链) 编译器似乎没有关于-lpcap的信息 它似乎与链接器指令文件有关 如果在编译时使用-lpcap选项,我希望链接libpcap.a 我需要在ld文件中添加一些内容吗 谢谢 通常,我们使用-L提供链接器应该在其中查找库的目录。因此,对于gcc,我们将使用 gcc -shared -o libmybest.so mybest.c -L ~/mydev/prebuild/arm -lpcap -llog …并将为arm编译的静态库libpcap.a放入目录~/myde

使用make命令时(独立工具链)

编译器似乎没有关于-lpcap的信息

它似乎与链接器指令文件有关

如果在编译时使用-lpcap选项,我希望链接libpcap.a

我需要在ld文件中添加一些内容吗


谢谢

通常,我们使用
-L
提供链接器应该在其中查找库的目录。因此,对于gcc,我们将使用

gcc -shared -o libmybest.so mybest.c -L ~/mydev/prebuild/arm -lpcap -llog
…并将为arm编译的静态库libpcap.a放入目录
~/mydev/prebuild/arm

当您使用bdk build为Android构建时,您可能会在Android.mk文件中编写类似的内容:

include $(CLEAR_VARS)              #### don't use this block in real life!!!
LOCAL_MODULE    := mybest
LOCAL_SRC_FILES += mybest.c
LOCAL_LDLIBS    += -llog
LOCAL_LDLIBS    += -L ~/mydev/prebuild/$(TARGET_ARCH_ABI) -lpcap
include $(BUILD_SHARED_LIBRARY)
不要这样做这在NDK的早期版本中有效,但现在不推荐使用

Android NDK的最佳实践是只有系统库(如
libm
libdl
liblog
列在
本地\u LDLIBS
中)

对于第三方预构建库,您应该使用:

include $(CLEAR_VARS)
LOCAL_MODULE    := pcap
LOCAL_SRC_FILES := ~/mydev/prebuild/$(TARGET_ARCH_ABI)/liblpcap.a
LOCAL_EXPORT_C_INCLUDES := ~/mydev/prebuild/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := mybest
LOCAL_SRC_FILES += mybest.c
LOCAL_LDLIBS    += -llog
LOCAL_STATIC_LIBRARIES += pcap
include $(BUILD_SHARED_LIBRARY)

这样,您就可以在一个块中获得有关libpcap的所有信息。

谢谢您的回复!
include $(CLEAR_VARS)
LOCAL_MODULE    := pcap
LOCAL_SRC_FILES := ~/mydev/prebuild/$(TARGET_ARCH_ABI)/liblpcap.a
LOCAL_EXPORT_C_INCLUDES := ~/mydev/prebuild/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := mybest
LOCAL_SRC_FILES += mybest.c
LOCAL_LDLIBS    += -llog
LOCAL_STATIC_LIBRARIES += pcap
include $(BUILD_SHARED_LIBRARY)