当我使用make命令(standalone_toolchain)
时 if (e.CommandName == "Details")
{
int id = Convert.ToInt32(e.CommandArgument);
Response.Redirect("~/MEMBER/UploadedDocList.aspx?id=" + id, false);
}
}
编译器似乎没有关于-lpcap
的信息它似乎与链接器指令文件有关。
如果我在编译时使用-lpcap选项,我想链接libpcap.a
我是否需要在ld文件中添加内容?
谢谢!
答案 0 :(得分:1)
通常,我们使用-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
< / strong>列在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 的所有信息。