2023-01-20 308
我正在尝试为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)
编辑:
创建了一个称为” OBJ”的子文件夹,它具有所有符号.
编辑:
这是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
如果您希望它显示动态符号,则必须将-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
我也有类似的问题.您可以使用自定义构建进行解决方法,以便-lotherlib作为最终参数传递.例如:
$ /path/to/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc \
--sysroot=/path/to/platforms/android-19/arch-arm \
-L/usr/local/src/lua-5.1.5/src -shared -lm -o mylibrary.so milibrary.o \
-lotherlib
我不是C专家,所以这花了我几天的时间来弄清楚:p,不确定-l应该在最后走…
以上所述是小编给大家介绍的编译Android的C库,但没有找到符号,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25993.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态