要澄清,这是关于二进制Linux可执行文件而不是脚本的问题,脚本也可以是可执行文件,并且通常缺少扩展名。
以我的经验,大多数Linux二进制可执行文件都没有文件扩展名;例如Linux系统上/bin
目录中的大多数文件都没有扩展名。
另一方面,/lib
目录中的大多数文件在文件扩展名中都具有.so
,并且还具有可执行权限。直接尝试执行.so
文件通常会导致段错误或某些错误,这是有道理的,因为共享库通常旨在动态链接。但是据我了解,如果.so
文件具有main()
入口点,则you can run it as an executable就像普通的可执行文件一样(即没有扩展名的文件)。
我的问题:
.so
扩展名)和可执行文件([none]
扩展名之间有什么区别?是否只是定义了main()
入口点?.so
扩展名)和将代码编译成Linux可执行文件([none]
扩展名)有什么区别(即,传递给编译器的标志)。编辑:This question讨论了如何使用gcc命令行构建.so文件,但没有确定构建.so与普通可执行文件之间的区别。
明确地说,这是关于二进制Linux可执行文件而不是脚本的问题,脚本也可以是可执行文件,并且通常缺少扩展名。以我的经验,大多数Linux二进制可执行文件都缺少文件...
main()
函数。它还包含与位置无关的代码,对于可执行文件可能是,也可能不是。如果do