假设我们已经在 /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
如果您想链接到另一个版本,则需要指定库的完整路径名。