Sun Studio 12:Fortran 编程指南

4.5.2 位置无关代码和 –xcode

可以将位置无关代码 (position-independent code, PIC) 绑定到程序中的任何地址,而无需链接编辑器进行重新定位。从固有性质出发,此类代码可以在同时发生的进程间共享。因而,如果要生成动态共享库,必须使用 -xcode 编译器选项将组件例程编译成与位置无关。

在与位置无关的代码中,对全局项的每一引用均会通过全局偏移表中的指针编译为某一引用。每个函数调用均会通过过程链接表以相对编址模式进行编译。在 SPARC 处理器上,全局偏移表的大小限制为 8 K 字节。

编译器标志 -xcode=v 用于指定二进制对象的代码地址空间。使用该标志,不但可以生成 32、44 或 64 位绝对地址,而且可生成与位置无关的、大小不同的模型代码。(-xcode=pic13 等效于传统的 -pic 标志,-xcode=pic32 等效于 -PIC。)

-xcode=pic32 编译器选项与 -xcode=pic13 类似,但前者允许全局偏移表跨 32 位地址范围。有关详细信息,请参见 f95(1) 手册页或《Fortran 用户指南》。