在 Linux 上编译的 PE 的动态符号 Table

Dynamic Symbol Table for PE compiled on Linux

我正在尝试获取已编译的 c 文件

的动态符号 table 的内容
#include<stdio.h>

int main(){
    printf("Hello, World!");
    return 0;
}

as portable executable (PE) on Linux with

i686-w64-mingw32-gcc hello_world.c -o hello32
x86_64-w64-mingw32-gcc hello_world.c -o hello64

我正在使用 objdump:

objdump --dynamic-syms hello32

并得到输出:

hello32:    file format pei-i386

objdump: hello32: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols

我希望 table 中有类似 printf 的函数。它适用于 gcc 和 ELF 二进制文件。

有谁知道如何正确编译文件以获得动态符号 table 和内容?

动态符号 的概念似乎在 PE-targeting binutils 中有点丢失。使用 objdump -p <file>objdump -x <file> 并在输出中查找 import tables。我还没有找到更好的 binutils 解决方案。来自 LLVM 的 llvm-readobj --coff-imports <file>。如果你想在运行时查看符号的来源,ntldd 是一个很好的工具。