链接程序和库指南

审计接口示例

以下简单示例创建了一个审计库,其中列显了动态可执行文件 date(1) 装入的每个共享库依赖项的名称。


$ cat audit.c

#include        <link.h>

#include        <stdio.h>

 

uint_t

la_version(uint_t version)

{

        return (LAV_CURRENT);

}

 

uint_t

la_objopen(Link_map * lmp, Lmid_t lmid, uintptr_t * cookie)

{

        if (lmid == LM_ID_BASE)

                (void) printf("file: %s loaded\n", lmp->l_name);

        return (0);

}

$ cc -o audit.so.1 -G -K pic -z defs audit.c -lmapmalloc -lc

$ LD_AUDIT=./audit.so.1 date

file: date loaded

file: /lib/libc.so.1 loaded

file: /lib/libm.so.2 loaded

file: /usr/lib/locale/en_US/en_US.so.2 loaded

Thur Aug  10 17:03:55 PST 2000