链接程序和库指南

记录局部审计程序

使用链接编辑器选项 -p-P 生成目标文件时,可以确定局部审计要求。例如,要使用审计库 audit.so.1 审计 libfoo.so.1,请在链接编辑时使用 -p 选项记录要求:


$ cc -G -o libfoo.so.1 -Wl,-paudit.so.1 -K pic foo.c

$ dump -Lv libfoo.so.1 | fgrep AUDIT

[3]    AUDIT      audit.so.1

在运行时,如果存在此审计标识符,则会装入审计库并将与标识目标文件相关的信息传递到此审计库。

如果单独使用此机制,则在装入审计库之前会显示搜索标识目标文件之类的信息。要提供尽可能多的审计信息,需要将存在的要求局部审计的目标文件传播给此目标文件的用户。例如,如果生成的应用程序依赖于 libfoo.so.1,则会对此应用程序进行标识,指明其依赖项需要审计:


$ cc -o main main.c libfoo.so.1

$ dump -Lv main | fgrep AUDIT

[5]    DEPAUDIT   audit.so.1

通过此机制启用的审计会导致向审计库中传递与所有应用程序显式依赖项有关的信息。使用链接编辑器的 -P 选项,还可以在创建目标文件时直接记录此依赖项审计:


$ cc -o main main.c -Wl,-Paudit.so.1

$ dump -Lv main | fgrep AUDIT

[5]    DEPAUDIT   audit.so.1

注 –

通过将环境变量 LD_NOAUDIT 设置为非空值,可以在运行时禁用审计。