C 为什么ld、nm、objdump报告';无符号';在此共享对象中,符号何时出现?
我有一个未记录的共享对象,我想链接它 我已经编写了一个包含所需函数的部分头文件,其中包含从Ghidra的反向工程中推断出来的签名C 为什么ld、nm、objdump报告';无符号';在此共享对象中,符号何时出现?,c,gcc,linker,shared-libraries,C,Gcc,Linker,Shared Libraries,我有一个未记录的共享对象,我想链接它 我已经编写了一个包含所需函数的部分头文件,其中包含从Ghidra的反向工程中推断出来的签名 gcc在链接时失败:对我使用的每个函数的“function\u name”的未定义引用 nm-D libXSAL.so nm: libXSAL.so: No symbols libXSAL.so: file format elf32-little SYMBOL TABLE: no symbols objdump-t libXSAL.so nm: libX
gcc
在链接时失败:对我使用的每个函数的“function\u name”的未定义引用
nm-D libXSAL.so
nm: libXSAL.so: No symbols
libXSAL.so: file format elf32-little
SYMBOL TABLE:
no symbols
objdump-t libXSAL.so
nm: libXSAL.so: No symbols
libXSAL.so: file format elf32-little
SYMBOL TABLE:
no symbols
然而,Ghidra发现了符号表中给出的函数名称,通过手动选择hexdump,我也可以看到它们
就我所见,名称混乱既不在库中,也不在我自己的代码中;这个库似乎是C,我的代码也是
我的目标是能够链接到此库
为什么有些工具看到符号,而其他工具看不到符号?此共享对象没有节头:
libXSAL.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), invalid note alignment 0x1, dynamically linked, no section header
根据ELF标准:
链接期间使用的文件必须具有节头表;其他对象文件可能有,也可能没有
您可能能够重建节标题表,但祝您好运
这是故意做的(大概是使用strip
),因此您无法链接到该文件
以下是执行此操作的strip
选项:
-s --strip-all Remove all symbol and relocation information
它可能已被剥离,因此您无法链接到它。试试objdump-d
,看看你是否只得到一堆乱码。@S.S.Anneobjdump-d
在第一行之外没有输出。你是为x86还是ARM编译的?ARM Little endian。