6.3.共享库

如果 port 安装了一个或多个共享库, 应定义一个 USE_LDCONFIG make 变量, 它将指示 bsd.port.mk 在安装后的目标中对安装新库的目录 (通常是 PREFIX/lib) 运行 ${LDCONFIG} -m 以将其注册到共享库缓存中。这个变量, 在定义之后, 也将有助于在 pkg-plist 中加入适当的 @exec /sbin/ldconfig -m@unexec /sbin/ldconfig -R 对, 以便安装软件包的用户能够立即开始使用这个共享库, 而在卸载时不会导致系统认为这个库还在那里。

USE_LDCONFIG=	yes

默认的目录可以通过设置 USE_LDCONFIG 来覆盖, 它是一个需要安装共享库的目录列表。例如, 如果 port 将共享库安装到 PREFIX/lib/fooPREFIX/lib/bar 中, 则应在 Makefile 中这样做:

USE_LDCONFIG=	${PREFIX}/lib/foo ${PREFIX}/lib/bar

请仔细检查,通常这根本不是必要的,或者可以通过-rpath或在链接时设置 LD_RUN_PATH 来避免(见lang/mosml的例子),或者通过shell-wrapper在调用二进制文件前设置 LD_LIBRARY_PATH,就像 www/seamonkey 那样。

当在 64 位系统上安装 32 位库时, 应使用 USE_LDCONFIG32 来代替。

如果该软件使用自动工具,特别是 libtool,请添加 USES=libtool

当主要库的版本号在更新到新的 port 版本时, 所有连接到受影响的库的其它 port 必须增加它们的 PORTREVISION, 以强制用新的库版本重新编译。

最后更新于

FreeBSD 中文社区