我知道 Linux 使用 shebang 行来确定用于脚本语言的解释器,但它如何用于二进制文件?
我的意思是我可以运行 Linux 二进制文件,并且已经安装了wine和mono、Windows 本机和 .NET 二进制文件。对于所有这些,它只是./binary-name
(如果不在 PATH 中)运行它。
Linux 如何确定给定的二进制文件必须作为 Linux 本机二进制文件、Windows 本机二进制文件(使用wine工具)还是作为 Windows .NET 二进制文件(使用单声道工具)运行?
Cel*_*ada 29
总之:binfmt_misc。它是一个特定于 Linux 的、不可移植的工具。
内核可以通过内置逻辑识别几种格式。即,这些是 ELF 格式(对于普通二进制文件)和 shebang 约定(对于脚本)。(感谢zwol的以下部分答案)。此外,Linux 可以识别一些深奥的或过时的或兼容性的内置格式。你可能不会遇到他们。它们是a.out
“em86”、“flat”和“elf_fdpic”。
其他所有内容都必须通过 binfmt_misc 系统注册。该系统允许您向内核注册一个基于幻数的简单模式检查,以及相应的解释器。
归档时间: |
|
查看次数: |
1283 次 |
最近记录: |