为android编译C库,但没有找到符号

为android编译C库,但没有找到符号,第1张

概述我正在尝试为 android编译一个简单的C库,但生成的库不包含任何符号/对象!我正在使用nm命令检查库. 这是Android.mk: LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := my_lib_staticLOCAL_MODULE_FILENAME := libmylibLOCAL_C_INCLUDE 我正在尝试为 android编译一个简单的C库,但生成的库不包含任何符号/对象!我正在使用nm命令检查库.

这是Android.mk:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODulE := my_lib_staticLOCAL_MODulE_filename := libmylibLOCAL_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-littlemipsgobjdump: MylibBot.o: not a dynamic objectDYNAMIC SYMBol table:no symbolsMylibCommon.o:     file format elf32-littlemipsgobjdump: MylibCommon.o: not a dynamic objectDYNAMIC SYMBol table:no symbolsMylibGameLogic.o:     file format elf32-littlemipsgobjdump: MylibGameLogic.o: not a dynamic objectDYNAMIC SYMBol table:no symbolsMylibUndoStack.o:     file format elf32-littlemipsgobjdump: MylibUndoStack.o: not a dynamic objectDYNAMIC SYMBol table:no symbols
解决方法 如果要显示动态符号,则必须将-D标志指定为nm.

您还可以使用-T标志来实现objdump

您应该使用ndk中提供的nm或objdump版本,而不是可能用于管理开发主机库的任何版本.这些将被发现埋在ndk的工具链/文件夹下,并且会有像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编译C库,但没有找到符号全部内容,希望文章能够帮你解决为android编译C库,但没有找到符号所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1122224.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存