GNU/DebianLinux和LD
假设我有一个由多个动态库组成的大型项目,这些库都将安装到/usr/lib或/usr/lib64。现在让我们假设其中一个库调用另一个已编译库。如果我将相互依赖的两个库放在同一位置,ld程序是否能够允许这两个库相互调用?是,只要它们的位置存在于目录集中GNU/DebianLinux和LD,linux,libraries,ld,dynamic-library,Linux,Libraries,Ld,Dynamic Library,假设我有一个由多个动态库组成的大型项目,这些库都将安装到/usr/lib或/usr/lib64。现在让我们假设其中一个库调用另一个已编译库。如果我将相互依赖的两个库放在同一位置,ld程序是否能够允许这两个库相互调用?是,只要它们的位置存在于目录集中ld在中搜索库。您可以使用LD\u LIBRARY\u PATHEnvironment变量覆盖此集合 请参阅手册,它将解决您的问题。是的,只要它们的位置存在于目录集ld中的库搜索中。您可以使用LD\u LIBRARY\u PATHEnvironment
ld
在中搜索库。您可以使用LD\u LIBRARY\u PATH
Environment变量覆盖此集合
请参阅手册,它将解决您的问题。是的,只要它们的位置存在于目录集
ld
中的库搜索中。您可以使用LD\u LIBRARY\u PATH
Environment变量覆盖此集合
请参阅手册,它将解决您的问题。答案可能是肯定的,但在两个库之间使用循环引用是非常糟糕的设计(即
liba.so
包含函数fa
,从libb.so
调用函数fb
,从liba.so
调用函数ga
)
您应该将这两个库合并到一个libbig中。因此
。别担心,库可能会很大(有些公司的Linux库有几百兆的代码)
Debian上的包
binutils-gold
中的gold
链接器应该对您有用。它比binutils
中较旧的链接器工作得更快。答案可能是肯定的,但在两个库之间有循环引用是非常糟糕的设计(即liba.so
包含函数fa
,从libb.so
调用函数fb
,从liba.so
调用函数ga
)
您应该将这两个库合并到一个libbig中。因此
。别担心,库可能会很大(有些公司的Linux库有几百兆的代码)
Debian上的包
binutils-gold
中的gold
链接器应该对您有用。如果您指的是运行时动态链接器/lib/ld linux*(与/usr/bin/ld相反),那么它比binutils
中的旧链接器工作得更快,它将在LD_LIBRARY_路径中查找库,该路径通常包括/usr/lib和/usr/lib64
通常,/lib/ld-*用于.a库,因此运行时的库;/usr/bin/ld用于编译时的.a库
但是,如果您的库使用dlopen()或类似工具来查找其他库(例如插件),则它们可能具有其他查找机制。例如,许多插件系统将使用dlopen读取特定(一个或多个)目录中的每个库。如果您指的是运行时动态链接器/lib/ld linux*(与/usr/bin/ld相反),它将在ld_LIBRARY_路径中查找库,该路径通常包括/usr/lib和/usr/lib64 通常,/lib/ld-*用于.a库,因此运行时的库;/usr/bin/ld用于编译时的.a库 但是,如果您的库正在使用dlopen()或类似工具来查找其他库(例如插件),则它们可能具有其他查找机制。例如,许多插件系统将使用dlopen读取特定(一个或多个)目录中的每个库