Linux 为什么有些应用程序附带共享库?

Linux 为什么有些应用程序附带共享库?,linux,.so,Linux,.so,我浏览了/usr/lib/x86_64-linux-gnu,注意到一些应用程序,比如gedit,附带了共享对象文件。我理解为什么库附带共享库,但独立应用程序也有什么好处呢?如果有人想为这些应用程序编写插件,他们可以使用共享库提供的API 另外,当您在一个软件包中有多个可执行文件使用该库时,您可以通过同时提供一个共享库来减少这些二进制文件的大小,而不是将其静态链接到每个二进制文件中 看看gedit示例,它附带了以下共享库: /usr/lib64/gedit/libgedit.so /usr/lib

我浏览了
/usr/lib/x86_64-linux-gnu
,注意到一些应用程序,比如gedit,附带了共享对象文件。我理解为什么库附带共享库,但独立应用程序也有什么好处呢?

如果有人想为这些应用程序编写插件,他们可以使用共享库提供的API


另外,当您在一个软件包中有多个可执行文件使用该库时,您可以通过同时提供一个共享库来减少这些二进制文件的大小,而不是将其静态链接到每个二进制文件中

看看gedit示例,它附带了以下共享库:

/usr/lib64/gedit/libgedit.so
/usr/lib64/gedit/plugins/libdocinfo.so
/usr/lib64/gedit/plugins/libfilebrowser.so
/usr/lib64/gedit/plugins/libmodelines.so
/usr/lib64/gedit/plugins/libsort.so
/usr/lib64/gedit/plugins/libspell.so
/usr/lib64/gedit/plugins/libtime.so
第一个是libgedit.so,用于其他可以重用gedit编辑器组件的应用程序

其余的都是gedit的插件。虽然它们是与应用程序一起构建和分发的,但它们是独立的插件,没有它们,gedit也可以工作。第三方插件也可能存在