内容

名称

ExtUtils::Liblist - 确定要使用的库以及使用方法

概要

require ExtUtils::Liblist;

$MM->ext($potential_libs, $verbose, $need_names);

# Usually you can get away with:
ExtUtils::Liblist->ext($potential_libs, $verbose, $need_names)

描述

此实用程序接受以 -llib1 -llib2 -llib3 格式表示的库列表,并返回适合包含在扩展 Makefile 中的代码行。可以使用 -L/another/path 格式包含额外的库路径,这将影响对所有后续库的搜索。

它返回一个包含四个或五个标量值的数组:EXTRALIBS、BSLOADLIBS、LDLOADLIBS、LD_RUN_PATH,以及可选的,对实际库文件名数组的引用。除非在 Unix 上,否则其中一些没有意义。请参阅下面关于这些平台特性的详细信息。仅当 $need_names 参数为真时才会返回文件名列表。

可以以三种方式链接依赖库

EXTRALIBS

链接包含此扩展的 Perl 二进制文件时需要链接的库列表。仅包含实际存在的库。这些库被写入文件,并在链接 Perl 时使用。

LDLOADLIBS 和 LD_RUN_PATH

使用 ld 创建共享库时,可以或必须链接到共享库的库列表。这些可能是静态库或动态库。LD_RUN_PATH 是 LDLOADLIBS 中目录的冒号分隔列表。它作为环境变量传递给链接共享库的进程。

BSLOADLIBS

在该平台上运行时动态链接所需的库列表。SunOS/Solaris 不需要此列表,因为 ld 会将信息(来自 LDLOADLIBS)记录到目标文件中。此列表用于创建 .bs(引导)文件。

PORTABILITY

此模块处理许多系统依赖项,并且代码中包含相当多的特定于体系结构的 if 语句。

VMS 实现

在 VMS 下执行的 ext() 版本在几个方面与 Unix-OS/2 版本不同。

此外,还尝试识别一些常见的 Unix 库名称,并根据需要将其过滤掉或转换为其 VMS 等效项。

通常,ext() 的 VMS 版本应该能够正确处理来自最初为 Unix 或 VMS 环境设计的扩展的输入。如果您遇到问题,或发现可以改进搜索的案例,请告知我们。

Win32 实现

在 Win32 下执行的 ext() 版本在几个方面与 Unix-OS/2 版本不同。

另请参阅

ExtUtils::MakeMaker