没有扩展名的Linux可执行文件的共享库(.so)之间的区别?

雅各布·斯特恩

明确地说,这是关于二进制Linux可执行文件而不是脚本的问题,脚本也可以是可执行文件,并且通常缺少扩展名。

以我的经验,大多数Linux二进制可执行文件都缺少文件扩展名。例如/bin,Linux系统上目录中的大多数文件都没有扩展名。

另一方面,目录中的大多数文件/lib都具有.so其文件扩展名,并且还具有可执行权限。.so直接尝试执行文件通常会导致段错误或某些错误,这是有道理的,因为共享库通常旨在动态链接。但是据我了解,如果.so文件具有main()入口点,则可以像执行普通可执行文件(即不带扩展名的文件)一样将其作为可执行文件运行

我的问题:

  1. 共享库(.so扩展名)和可执行文件([none]扩展名)有什么区别是否只是main()定义入口点?
  2. 在C ++中,将代码编译成共享库(.so扩展名)和将代码编译成Linux可执行文件([none]扩展名)有什么区别(即,传递给编译器的标志)。

编辑:此问题讨论了如何使用gcc命令行构建.so文件,但没有确定构建.so与普通可执行文件之间的区别。

泰德·林格莫
  1. 主要区别之一是共享库没有main()功能。它还包含与位置无关的代码,对于可执行文件可能是,也可能不是。如果你把一个main()函数库,你还需要将它与一个链接正常目标文件(含 main()功能)。
  2. 是。要创建共享库,请使用-fpic-fPIC编译适用于共享库的位置无关代码(PIC编译代码

myexe.so虽然没有什么可以阻止您创建一个称为的可执行文件,但是它不能用作共享库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可执行文件,静态库和共享库之间的关系

来自分类Dev

可执行文件目录与可执行文件之间的区别

来自分类Dev

“ bash可执行文件”和“ bash -c可执行文件”之间的区别

来自分类Dev

可执行文件目录与可执行文件之间的区别

来自分类Dev

rm可执行文件>> dev / null与rm可执行文件之间的区别

来自分类Dev

代码对象和可执行文件之间的区别

来自分类Dev

可执行文件和./executable之间的区别

来自分类Dev

chmod + x与sudo可执行文件之间的区别

来自分类Dev

如何将 32 位共享库(.so 文件)链接到 32 位可执行文件?

来自分类Dev

如何使用CMD脚本运行没有EXE扩展名的可执行文件?

来自分类Dev

需要`。/`的可执行文件和不需要`。/`的可执行文件有什么区别?

来自分类Dev

.so文件和.a文件之间的区别?

来自分类Dev

“ LSB可执行文件”(ET_EXEC)和“ LSB共享对象”(ET_DYN)有什么区别?

来自分类Dev

软件BOT,“始终运行的可执行文件”和软件服务器之间有什么区别?

来自分类Dev

如何在不同的可执行文件之间共享或保留数据?

来自分类Dev

在多个WSF进程之间共享Excel.Application可执行文件?

来自分类Dev

加载的ELF可执行文件之间是否共享.text节?

来自分类Dev

找出可执行文件的扩展名?

来自分类Dev

GNU libc.so如何既是共享对象又是独立可执行文件?

来自分类Dev

如何仅在Linux中复制可执行文件(或不带扩展名的文件)?

来自分类Dev

Linux长期运行的后台服务/可执行文件的扩展名是什么?

来自分类Dev

在Unix中,shell脚本和可执行文件有什么区别?

来自分类Dev

Linux:可执行文件找不到共享库

来自分类Dev

更改Linux可执行文件的特定共享库

来自分类Dev

在可执行文件之间交换数据

来自分类Dev

作为可执行文件运行Python文件与从命令行运行Python文件之间的区别?

来自分类Dev

覆盖正在运行的可执行文件或.so

来自分类Dev

ld.so是可执行文件吗?

来自分类Dev

CMake没有创建可访问我的共享库的可执行文件

Related 相关文章

  1. 1

    可执行文件,静态库和共享库之间的关系

  2. 2

    可执行文件目录与可执行文件之间的区别

  3. 3

    “ bash可执行文件”和“ bash -c可执行文件”之间的区别

  4. 4

    可执行文件目录与可执行文件之间的区别

  5. 5

    rm可执行文件>> dev / null与rm可执行文件之间的区别

  6. 6

    代码对象和可执行文件之间的区别

  7. 7

    可执行文件和./executable之间的区别

  8. 8

    chmod + x与sudo可执行文件之间的区别

  9. 9

    如何将 32 位共享库(.so 文件)链接到 32 位可执行文件?

  10. 10

    如何使用CMD脚本运行没有EXE扩展名的可执行文件?

  11. 11

    需要`。/`的可执行文件和不需要`。/`的可执行文件有什么区别?

  12. 12

    .so文件和.a文件之间的区别?

  13. 13

    “ LSB可执行文件”(ET_EXEC)和“ LSB共享对象”(ET_DYN)有什么区别?

  14. 14

    软件BOT,“始终运行的可执行文件”和软件服务器之间有什么区别?

  15. 15

    如何在不同的可执行文件之间共享或保留数据?

  16. 16

    在多个WSF进程之间共享Excel.Application可执行文件?

  17. 17

    加载的ELF可执行文件之间是否共享.text节?

  18. 18

    找出可执行文件的扩展名?

  19. 19

    GNU libc.so如何既是共享对象又是独立可执行文件?

  20. 20

    如何仅在Linux中复制可执行文件(或不带扩展名的文件)?

  21. 21

    Linux长期运行的后台服务/可执行文件的扩展名是什么?

  22. 22

    在Unix中,shell脚本和可执行文件有什么区别?

  23. 23

    Linux:可执行文件找不到共享库

  24. 24

    更改Linux可执行文件的特定共享库

  25. 25

    在可执行文件之间交换数据

  26. 26

    作为可执行文件运行Python文件与从命令行运行Python文件之间的区别?

  27. 27

    覆盖正在运行的可执行文件或.so

  28. 28

    ld.so是可执行文件吗?

  29. 29

    CMake没有创建可访问我的共享库的可执行文件

热门标签

归档