我没有找到任何关于为什么需要使用 ranlib
/ ar -s
进行静态链接的适当信息。
假设我有一个由多个模块组成的应用程序。每个模块都有自己的代码文件夹,并且对象文件在它们自己的文件夹中创建:module1/%.c → bin/module1/%.o
。对于每个模块,我会创建一个 .a
文件:ar -rc bin/module1.a bin/module1/….o
。整个程序通过 gcc bin/module1.a … moduleN.a -o bin/app
进行编译。
在这种情况下,为 .a
文件创建索引有什么作用?即使我不为 .a
文件添加索引,编译和程序也可以正常工作。但是,我发现的每个示例都是在将最后一个对象文件添加到存档后调用了 ranlib
。
这个问题不特定于 Linux/Mac/Windows。