gpt4 book ai didi

compiler-errors - 关于编译器-l选项(arm-linux-androideabi-gcc)

转载 作者:行者123 更新时间:2023-12-02 10:46:15 26 4
gpt4 key购买 nike

当我使用make命令(standalone_toolchain)

/opt/android-14-toolchain/arm-linux-androideabi/bin/ld: error: cannot find -lpcap

编译器似乎没有有关-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 LOCAL_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 的所有信息。

关于compiler-errors - 关于编译器-l选项(arm-linux-androideabi-gcc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48538185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com