【发布时间】:2016-09-13 13:15:03
【问题描述】:
我浏览了/usr/lib/x86_64-linux-gnu 并注意到某些应用程序(例如 gedit)附带共享对象文件。我理解为什么库会附带共享库,但独立应用程序这样做有什么优势?
【问题讨论】:
我浏览了/usr/lib/x86_64-linux-gnu 并注意到某些应用程序(例如 gedit)附带共享对象文件。我理解为什么库会附带共享库,但独立应用程序这样做有什么优势?
【问题讨论】:
查看 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 也应该在没有它们的情况下工作。第三方插件也可以在那里。
【讨论】:
如果有人想为这些应用程序编写插件,他们可以使用提供的 API,该 API 可供共享库使用。
此外,当您在一个软件包中使用该库的多个可执行文件时,您可以通过同时提供一个共享库而不是将其静态链接到每个二进制文件来减小这些二进制文件的大小。
【讨论】: