Compiler errors 关于编译器-l选项(arm linux AndroidABI gcc)
使用make命令时(独立工具链) 编译器似乎没有关于-lpcap的信息 它似乎与链接器指令文件有关 如果在编译时使用-lpcap选项,我希望链接libpcap.a 我需要在ld文件中添加一些内容吗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
谢谢 通常,我们使用
-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)