我正在尝试为 android 编译一个简单的 C 库,但生成的库不包含任何符号/对象!我正在使用检查图书馆nm
命令。
这是 Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_lib_static
LOCAL_MODULE_FILENAME := libmylib
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_SRC_FILES := File1.c File2.c
include $(BUILD_SHARED_LIBRARY)
# or include $(BUILD_STATIC_LIBRARY)
EDIT:
将创建一个名为“objs”的子文件夹,其中包含所有符号。
EDIT:
这是的输出gobjdump
:
MyLibBot.o: file format elf32-littlemips
gobjdump: MyLibBot.o: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols
MyLibCommon.o: file format elf32-littlemips
gobjdump: MyLibCommon.o: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols
MyLibGameLogic.o: file format elf32-littlemips
gobjdump: MyLibGameLogic.o: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols
MyLibUndoStack.o: file format elf32-littlemips
gobjdump: MyLibUndoStack.o: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols
如果您希望它显示动态符号,则必须为 nm 指定 -D 标志。
您还可以使用 -T 标志进行 objdump
您应该使用 ndk 中提供的 nm 或 objdump 版本,而不是任何可能用于管理开发主机库的版本。这些将被发现埋藏在 ndk 的 toolchains/ 文件夹下,并且有类似的前缀名称arm-linux-androideabi-nm
例如,(在我有一段时间没有用于 Android 工作的系统上,因此包含过时的版本 - 您将必须使用一些独创性来找到适用于您的系统的内容):
$NDK/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-nm -D mylibrary.so
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)