Linux 命令速查
开发工具 man ranlib

ranlib

为静态库(ar 归档)生成或更新符号索引。

返回

补充说明

ranlib 属于 GNU binutils,作用是为 .a 静态库建立符号索引(archive index),让链接器能快速定位符号。现代 ar 在创建或修改归档时通常会自动维护索引,因此单独运行 ranlib 的场景已经不多,但在使用老旧构建脚本或手工拼装归档时仍会遇到。

索引记录每个全局符号定义在哪个成员目标文件中,链接时 ld 读取它来解析引用。如果归档被低层工具修改而没有更新索引,链接器可能报 undefined reference;此时运行一次 ranlib 或 ar s 即可修复。

GNU 工具链支持可重现构建:-D 让索引与时间戳无关,-U 恢复依赖时间的传统行为。默认模式由编译时的配置决定,发行版通常默认 -D。注意 ranlib 只处理归档,对 .so 动态库无效。

语法

ranlib [选项] 静态库文件...

选项

  • -D:确定性模式,索引不包含时间戳等易变信息
  • -U:非确定性模式,恢复传统行为
  • -v:显示版本信息
  • --help:显示帮助

实例

# 为一个静态库重建符号索引
ranlib libfoo.a

# 等价的 ar 写法
ar s libfoo.a

# 查看归档中包含哪些目标文件
ar t libfoo.a

# 确认索引中的符号
nm -s libfoo.a | head -n 20

# 可重现构建中显式使用确定性模式
ranlib -D libfoo.a

参考链接