如何检查是否一个文件是一个DLL?
题
给定一个文件,我想检查这是否是一个DLL或共享对象(Linux)或一个dylib(Mac OS X中),或不同的东西。我的主要兴趣是区分可执行文件和DLL在Linux和Mac OS X的窗口,扩展应该够了我的问题。
我已经检查了幻数技术不工作Linux作为可执行文件和共享对象都具有相同的数目。
解决方案
在UNIX(Linux和Mac OS X)命令file
知道如何识别文件类型。
man file
告诉你用来做这个“神奇”的信息,特别是,与该信息的文件是可以找到。
man 5 magic
详细介绍了该文件,也应该告诉你它生活的地方。你可以在那里一看,拉东西你需要它。从file
的源极和/或只是婴儿床代码。
更新:结果
请注意,在Linux上的文件可能是的两个的可执行文件,并在同一时间共享库。结果
一个例子是/lib/libc.so.6
(其可被执行的共享库)。结果
又如:与-pie
标志构建的任何可执行可以被用作一个共享库。请参见的详细信息该答案。
其他提示
使用file
工具(Linux和Mac OS)。
写一个程序,尝试加载DLL - 如果它成功了,它是一个:)
编辑:确定这还不如可执行文件以及成功: - /
不隶属于 StackOverflow