链接程序和库指南

折叠多重定义数据

可以通过折叠多重定义数据来减小数据大小。多次出现相同错误消息的程序可以通过定义全局数据来加以改进,并可使所有其他实例都引用此全局数据。 例如:


const char * Errmsg = "prog: error encountered: %d";



foo()

{

        ......

        (void) fprintf(stderr, Errmsg, error);

        ......

进行此类数据缩减的主要目标文件是字符串。可以使用 strings(1) 查看共享库中的字符串用法。以下示例在文件 libfoo.so.1 中生成数据字符串的有序表。此列表中的每项都使用字符串的出现次数作为前缀。


$ strings -10 libfoo.so.1 | sort | uniq -c | sort -rn