我经常看到术语“二进制”和“可执行文件”似乎在同一事物上互换使用。
不是用两个术语来描述完全相同的事物;经过编译的可执行输出程序,可以在终端上运行吗?
加强我的假设的是,这两件事也应该是相同的,这是在应用程序的安装文件夹中提供bin
文件夹(“ bin”为“ binaries”的缩写)的一种常见做法,存储可执行文件,用户可以在其中运行。
我已经阅读了What's the difference between binary and executable files mentioned in ndisasm's manual?的问题和答案,但问题和他们的答案更多地集中在Clang和ndisasm的相应环境上。
我还在软件工程论坛上阅读了https://softwareengineering.stackexchange.com/questions/121224/what-are-binaries的问题和答案,但是在这里,可执行文件和二进制文件之间没有区别;通常只有“二进制”一词可以指代:
但是,在计算中,二进制是指:
- Binary file,由非人类可读的文本组成
- Executable,一种二进制文件,其中包含计算机要执行的机器代码
- [Binary code,文本和数据的数字表示
[来源:https://softwareengineering.stackexchange.com/a/121235/349225]
其中,在编译过程的输出程序的上下文中,二进制文件与可执行文件相同,以及:]]
单词binaries
用作一组文件,[本质上是在计算机上运行的目标代码。 (如果是Java / .NET,则为虚拟机/运行时)[来源:https://softwareengineering.stackexchange.com/a/121234/349225]在相同的地方。
.dll
或.so
形式的库是二进制文件,但不是可执行文件。编译为.class
或.jar
格式的Java程序不是可执行文件,但可以使用命令java -jar program.jar
而不是命令./program.jar
运行。可执行文件不一定是二进制的,例如,可以通过编写shebang line #!/usr/bin/python3
并设置文件的可执行标志,使文本格式的Python脚本在Unix系统上可执行。