ExtUtils::Mksymlists - 为动态扩展编写链接器选项文件
use ExtUtils::Mksymlists;
Mksymlists( NAME => $name ,
DL_VARS => [ $var1, $var2, $var3 ],
DL_FUNCS => { $pkg1 => [ $func1, $func2 ],
$pkg2 => [ $func3 ] );
ExtUtils::Mksymlists
生成一些在某些操作系统中由链接器在为动态扩展创建共享库时使用的文件。通常在构建扩展时通过 MakeMaker 生成的 Makefile 中调用它。链接器选项文件通过调用函数 Mksymlists
生成,该函数默认从 ExtUtils::Mksymlists
导出。它接受一个参数,即一个键值对列表,其中识别以下键
此项指定链接器识别扩展的名称,该名称可能与扩展本身的名称不同(例如,一些链接器会在扩展名称中添加 '_')。如果未指定,则会从 NAME 属性派生。目前仅 OS2 和 Win32 使用它。
这与通过 MakeMaker 可用的 DL_FUNCS 属性相同,通常从中获取该属性。其值为对关联数组的引用,其中每个键是包的名称,每个值是对函数名称数组的引用,该数组应由扩展导出。例如,可以写成 DL_FUNCS => { Homer::Iliad => [ qw(trojans greeks) ], Homer::Odyssey => [ qw(travellers family suitors) ] }
。函数名称应与 XSUB 代码中的名称相同;Mksymlists
将更改写入链接器选项文件的名称,以匹配由 xsubpp 做出的更改。此外,如果列表中没有一个函数以字符串 boot_ 开头,Mksymlists
将为该包添加一个引导函数,就像 xsubpp 所做的那样。(如果列表中存在 boot_<pkg> 函数,则该函数将原样传递。)如果未指定 DL_FUNCS,则它默认为 NAME 中指定的扩展的引导函数。
这与通过 MakeMaker 可用的 DL_VARS 属性相同,并且与 DL_FUNCS 一样,通常通过 MakeMaker 指定。其值为对变量名称数组的引用,该数组应由扩展导出。
如果出于某种原因不想使用默认值,可以使用此键指定链接器选项文件的名称(不带操作系统特定的扩展名),该默认值是 NAME 属性的最后一个单词(例如,对于 Tk::Canvas
,FILE 的默认值为 Canvas
)。
这提供了一种备用方法来指定要从扩展导出的函数名称。其值为对要由扩展导出的函数名称数组的引用。这些名称将原样传递到链接器选项文件。为 FUNCLIST 属性指定值会禁止自动生成包的引导函数。若要仍创建引导名称,则必须在 DL_FUNCS 哈希中指定包名称。
Mksymlists( NAME => $name ,
FUNCLIST => [ $func1, $func2 ],
DL_FUNCS => { $pkg => [] } );
此属性用于指定要导入到扩展中的名称。目前仅由 OS/2 和 Win32 使用。
这给出了将为其生成链接器选项文件的扩展的名称(例如 Tk::Canvas
)。
在调用 Mksymlists
时,应始终指定 NAME 属性。在大多数情况下,这就可以了。但是,对于不寻常的扩展,可以使用其他属性向链接器提供其他信息。
Charles Bailey <[email protected]>
最后一次修订于 1996 年 2 月 14 日,针对 Perl 5.002。