我知道对象文件(.o)总是可以重定位的,
那么.a和.so文件呢?
.a
.so
.a文件只是其他文件的存档。 通常这些是.o文件,您已经知道答案。 他们不必一定是 – 实际上他们不必是目标代码 – 他们可以是任何你喜欢的文件。
.o
.so文件必须可重定位才能工作,因为它必须能够在不同的进程中的不同地址加载,具体取决于运行时可用的地址。