Oracle® Solaris 11.2 链接程序和库指南

退出打印视图

更新时间: 2014 年 7 月
 
 

创建审计库

审计库的生成方式与其他任何共享目标文件的生成方式相同。但是,必须注意进程内审计库名称空间的唯一性。

  • 该库必须提供所有依赖性需求。

  • 该库不应使用无法用于进程内多个接口实例的系统接口。

如果审计库引用外部接口,则审计库必须定义提供接口定义的依赖性。例如,如果审计库调用 printf(3C),则审计库必须定义与 libc 之间的依赖性。请参见生成共享目标文件输出文件。由于审计库具有唯一的名称空间,因此,所审计的应用程序中提供的 libc 无法满足符号引用。如果审计库依赖于 libc,则会向进程中装入两种版本的 libc.so.1。一种版本用于满足应用程序链接映射列表的绑定要求,另一种版本用于满足审计链接映射列表的绑定要求。

要确保生成的审计库会记录所有的依赖项,请使用链接编辑器的 –z defs 选项。

部分系统接口会假定其是进程内实现的唯一实例,例如信号和 malloc(3C)。审计库应该避免使用此类接口,因为这样做可能会无意中更改应用程序的行为。


注 - 审计库可以使用 mapmalloc(3MALLOC) 来分配内存,因为此分配方法可以与应用程序通常使用的任何分配方案同时存在。