Linux程序如何知道库文件的位置以及如何调用它们?

时间:2015-06-15 08:38:28

标签: linux shared-libraries

当我使用apt-get install安装程序时,它告诉我还需要安装哪些依赖库。

例如,Nginx需要安装libgd3(3d图形库)。

  1. 当Nginx需要调用libgd3中的代码时,它如何知道文件的位置和
  2. 它是如何实际的呢?我假设它必须将它加载到Nginx进程堆中然后使用某种函数表来进行调用?
  3. 我不确定这个过程是如何运作的,谢谢。

2 个答案:

答案 0 :(得分:0)

这些库通常是/ usr / lib标准路径,链接器在链接期间搜索这些路径。动态库在linux中称为共享对象,扩展名为 .so 。 查看此链接以了解有关Linux库的更多信息: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

答案 1 :(得分:0)

通常通过环境变量LD_LIBRARY_PATH,这是一组应首先搜索库的目录

查看它的设置:

env | grep LD_LIBRARY_PATH

您可以通过

更新要临时搜索的新位置

export $ LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/ new / dir / to / look

您的发行版中不存在此env变量的可能性。所以你可以试试下面的

1)将库目录添加到/etc/ld.so.conf或

2)使用ldconfig

将其添加到库缓存中

请在此处阅读更多内容

http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html