gpt4 book ai didi

android - 为 android 编译 C 库,但未找到符号

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:53 26 4
gpt4 key购买 nike

我正在尝试为 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)

编辑:

创建了一个名为“objs”的子文件夹,其中包含所有符号。

编辑:

这是 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

关于android - 为 android 编译 C 库,但未找到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23044815/

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