当前位置: 首页 > 知识库问答 >
问题:

共享库(所以)一个没有扩展名的Linux可执行文件?

晋鹤轩
2023-03-14

澄清一下,这是一个关于二进制 Linux 可执行文件的问题,而不是脚本,脚本也可以是可执行的,并且通常缺少扩展。

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

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

我的问题:

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

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

共有1个答案

龚盛
2023-03-14
    < li >主要区别之一是共享库没有< code>main()函数。它还包含独立于位置的代码,这可能是也可能不是可执行文件的情况。如果您将< code>main()函数放入库中,您仍然需要将它与一个普通的目标文件(不包含< code>main()函数)链接起来。 < li >是的。要创建共享库,可以使用< code>-fpic或< code>-fpic编译代码,以生成适合在共享库中使用的位置无关代码(PIC)。

不过,没有什么可以阻止您创建名为 myexe.so 的可执行文件,但它不能用作共享库。

 类似资料:
  • 问题内容: 我想知道系统上的可执行文件使用了哪些库。更具体地说,我想对使用最多的库以及使用它们的二进制文件进行排名。我怎样才能做到这一点? 问题答案: 使用到列表共享为每个可执行文件库。 清理输出 排序,计算计数,按计数排序 要在“ / bin”目录中找到所有可执行文件的答案: 将上面的“ / bin”更改为“ /”以搜索所有目录。 输出(仅针对/ bin目录)将如下所示: 编辑-删除了“ gre

  • 我用NetBeans编写了一个程序,现在想与我的同事分享。但是,当他尝试在计算机上运行时,他会收到一条错误消息: 让人困惑的是:我在装有NetBeans的笔记本电脑上写了这篇文章,为了确保它能正常工作,我将文件夹复制到闪存驱动器上,然后在我的电脑上运行。它工作得很好。当我把它发电子邮件给我的同事时,他发现了那个错误。 根据我所看到的,一些解决方案是运行。命令行中的jar。虽然这可能会起作用,但我需

  • 问题内容: 我们遇到一个与Java应用程序有关的问题,该Java应用程序在具有Via C3处理器的Advantech POS板上的(较旧的)FC3下运行。Java应用程序具有几个可通过JNI访问的已编译共享库。 通过C3处理器应该与i686兼容。前一段时间,在具有相同处理器的MiniItx板上安装Ubuntu 6.10之后,我发现前面的陈述不是100%正确。由于缺少C3处理器中i686设置的某些特

  • 问题内容: 我正在尝试建立一个共享库。让我们说libabc.so。它使用另一个.so文件,例如lib123.so(/ usr / local / lib中的一个lib)。现在我在我的应用程序中使用共享的liblibabc.so。说我的应用程序。我想知道我应该如何链接这些二进制文件?我不想直接将我的应用程序与lib123.so链接。my- app应该仅与libabc.so链接。我怎样才能做到这一点?

  • 问题内容: 我有许多扩展名为.txt的文件。如何删除Linux中多个文件的.txt扩展名? 我找到 替代扩展 我也想对子文件夹中的文件执行此操作。 问题答案: 有点危险,因为根据其手册页: 重命名将通过替换第 一次 出现的… 来重命名指定的文件。 像这样的文件名会很乐意做错事。 这是使用和的解决方案: 请记住,如果文件名包含换行符(罕见,但并非不可能),这将中断。 如果您有GNU查找,这是一个更可

  • 问题内容: 为了帮助实现这一点,下面的代码在文件夹中查找txt文件,以及如何使其列出不含扩展名的文件名。这是代码: 如您所见,就在这里: 这是将文件列表与myname的值进行比较,因此您可以帮助比较表和myName和list [i](不考虑文件扩展名)的情况,例如程序显示该文件夹具有以下布局: indeks.html hi.html,用户输入了indeks.html,比较不错,但是如何创建一个代码