ranlib笔记

来源:互联网 发布:java中参数是什么意思 编辑:程序博客网 时间:2024/05/16 14:43

ranlib作用:

更新静态库的符号索引表 

ar -s 等价于 ranlib

    因历史遗留问题而存在。

    GNU工具中ar是用来制作库文件.a的,但同时还提供了一个ranlib,从手册上看ranlib相当于ar -s,为什么这样呢?这是由于最早在Unix系统上ar程序是单纯用来打包多个.o到.a(类似于tar做的事情),而不处理.o里的符号表。Linker程序则需 要.a文件提供一个完整的符号表,所以当时就写了单独的ranlib程序用来产生linker所需要的符号信息。也就是说,产生一个对linker合 格的的.a文件需要做ar和ranlib两步 。

很快,Unix厂商就发现ranlib做得事情完全可以合并到ar里面去,于是ar程序的升级版本就包括了ranlib的功能,但早期的很多项目的Makefile都已经是按照两步式的方法生成.a,所以为了保证这些早期文件的兼容性,ranlib被保留下来了。如今,GNU/Linux系统上,ranlib依然存在,当然大部分项目已经不使用它了,因为ar -s就做了ranlib的工作。历史通常是进步和妥协的混合!




0 0
原创粉丝点击