TL; DR
我常用的命令:
- Linux
sh
ldd
- Windows(需要借助vs)
sh
dumpbin /DEPENDENTS
- Android
sh
ldd +绝对路径
在不同的操作系统下,查看可执行文件、动态库和静态库的命令各不相同。以下是 Linux、Windows 和 Android 平台下的常用命令:
1. Linux
在 Linux 系统中,使用以下命令查看可执行文件、动态库和静态库的信息:
-
查看可执行文件信息:
file <filename>
:查看文件类型,包括是否是可执行文件。ldd <filename>
:显示可执行文件或动态库所依赖的动态库。readelf -h <filename>
:查看 ELF 文件头信息,适用于 Linux 下的可执行文件和库。objdump -x <filename>
:显示可执行文件、动态库或静态库的详细信息。nm <filename>
:列出符号表信息(用于可执行文件和库)。
-
查看动态库信息:
ldconfig -p | grep <library_name>
:列出系统中已加载的动态库,并过滤指定库名。readelf -d <library_name>
:显示动态库的动态段信息。nm -D <library_name>
:列出动态库中的导出符号。
-
查看静态库信息:
ar t <library_name.a>
:列出静态库中的成员文件。nm <library_name.a>
:列出静态库中的符号表信息。
2. Windows
在 Windows 系统中,查看可执行文件和库信息通常通过命令提示符(cmd)或 PowerShell 来进行:
-
查看可执行文件信息:
dumpbin /HEADERS <filename>
:显示可执行文件的头信息。dumpbin /DEPENDENTS <filename>
:显示可执行文件所依赖的 DLL 动态库。sigcheck <filename>
:用于查看可执行文件的签名和其他信息。
-
查看动态库信息:
dumpbin /EXPORTS <filename.dll>
:列出 DLL 文件的导出符号。depends.exe <filename>
:使用 Dependency Walker 工具查看 DLL 的依赖关系(图形化工具)。
-
查看静态库信息:
dumpbin /SYMBOLS <library_name.lib>
:列出静态库中的符号。
3. Android
Android 基于 Linux 内核,可以使用类似的命令。通常使用 Android 开发工具 (ADB) 或终端进行操作:
-
查看可执行文件信息:
file <filename>
:查看文件类型。readelf -h <filename>
:查看 ELF 文件头信息。objdump -x <filename>
:显示详细信息。
-
查看动态库信息:
ldd <library_name>
:查看动态库的依赖关系(注意:部分 Android 系统没有ldd
)。readelf -d <library_name>
:查看动态库的动态段。nm -D <library_name>
:列出动态库中的符号表。
-
查看静态库信息:
ar t <library_name.a>
:列出静态库中的成员文件。nm <library_name.a>
:列出符号表。
对于 Android 系统,由于限制,很多命令需要在 rooted 环境或使用模拟器中执行,或者通过 ADB 来访问。
这些命令可以帮助你详细了解不同平台下的可执行文件、动态库和静态库的内容。