如果库有多个版本,系统会使用哪个版本

如果库有多个版本,系统会使用哪个版本

假设我们已经在 /usr/lib64/libfreetype.so 中安装了 freetype 库,其版本为 1.4,并且我们在 /usr/local/lib/libfreetype.so 中编译并安装了该库的另一个版本。当我们构建需要 freetype 的软件时,构建系统 (make) 如何知道要使用哪个版本?

答案1

TL;DR 版本:这取决于。

  • 操作系统:可能存在操作系统特定环境 ( LD_LIBRARY_PATH) 配置文件或命令(例如ldconfig(8)),用于注册用于搜索库的路径。
  • 构建系统:可能有环境变量例如LDFLAGS命令行标志或配置文件设置;当系统(或用户)在自定义路径下有 ncurses 时mutt--with-curses=[dir]这些取决于构建系统(甚至是 的风格make),并且可能需要手动写入 autoconf 或 cmake 文件中。
  • 构建后配置:诸如patchelf(如果可用)之类的工具允许选择不同的库或更改搜索路径。

答案2

libxxx.so通常是共享库文件的符号链接,名称中包含版本。

如果您使用 链接,则使用-lxxx此文件。libxxx.so

如果您想链接到另一个版本,则需要指定库的完整路径名。

相关内容