- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通过查看问题标题不要误会我-我知道它们是什么(便携式可执行文件的格式)。但是我的兴趣范围略有不同
我的CONFUSION
我参与了重新托管/重新定向最初来自第三方的应用程序。问题在于,有时目标代码的格式也为.elf,.COFF格式,并且仍然显示为“可执行和可链接”。
我主要是Windows用户,并且知道在编译和汇编C / C++代码时,您会看到类似于.o或.obj的内容。不能执行的代码(嗯,我从未尝试执行它们)。但是,当您完成静态和动态库的链接并完成构建后,可执行文件就会出现。我的理解是,如果有必要,您可以接着链接可执行文件或使用某种形式的脚本“bash”对其进行测试。
但是,在Linux(或类似UNIX的系统)中,编译和汇编C / C++代码后会有.o文件。链接完成后,可执行文件将采用a.out格式(至少在Linux的Ubuntu发行版中)。在其他发行版中,它很可能是.elf。在我的快速网络搜索中,没有任何资料提及.o文件作为可执行文件。
问题
因此,我的问题变成以下几点:
最佳答案
I am primarily a Windows user and know that when you compile your C/C++ code, you get something similar to .o or .obj. that are not executable
.obj
文件,这正是它的名称所暗示的:这是一个
object file。您说对了,因为它本身不是可执行文件。它包含的机器代码尚未包含足够的信息以直接在CPU上运行。
However, in Linux (or UNIX-like systems) there are .o files after you compile the C/C++ code. And once the linking is done, the executable is in a.out format (at least in Ubuntu distribution of Linux). It may very well be .elf in some other distrib.
a.out
格式作为目标代码的默认输出格式。如果未指定显式输出文件名,将目标代码放入名为
a.out
的文件中可能是误导性的GCC默认设置,但是如果在
file
上运行
a.out
命令,您会发现它是一个ELF文件。
a.out
格式很古老,有点“事实上已经过时”。
What is the true definitions for portable executables and object code?
How is it that Windows and UNIX platform covers both executables annd object code under the same file format (.COFF, .elf).
Am I misinterpreting "Linkable"?
Based on question 1. (and perhaps 2) do I need to use symbol tables (e.g. .LUM or .MAP files) with object code then? Symbols as in debug symbols and using them when re-hosting the object files on a different machine.
关于linker - 用法之间的差异。 a.out,.ELF,.EXE和.COFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336239/
我是一名优秀的程序员,十分优秀!