在不重定位的情况下仅生成纯库。
-ztext 的一般用途是验证所生成的库是否为纯文本;指令都是与位置无关的代码。因此,它通常与 -G 和 -pic 一起使用。
使用 -ztext 时,如果 ld 在 text 段中找到了不完整的重定位,则不会生成库。如果它在 data 段中找到了不完整的重定位,则通常会生成库;数据段是可写入的。
不使用 -ztext 时,ld 会生成库,与有无重定位无关。
如果您不知道目标文件是否是使用 -pic 生成的,则一种典型用法是利用源文件和目标文件生成库。
示例: 利用源文件和目标文件生成库:
demo% f95 -G -pic -ztext -o MyLib -hMyLib a.f b.f x.o y.o |
另一种用法是确认代码是否与位置无关: 不带 -pic 进行编译,但确认是否为纯文本。
示例:确认是否为纯文本-即使不带 -pic 进行编辑:
demo% f95 -G -ztext -o MyLib -hMyLib a.f b.f x.o y.o |
选项 -ztext 和 -xprofile=collect 不应同时使用。-ztext 会阻止只读存储中与位置有关的符号重定位,而 -xprofile=collect 会在可写存储中生成静态初始化且与位置有关的符号重定位。
如果使用 -ztext 进行编译时 ld 不生成库,则可以在不使用 -ztext 的情况下重新编译,此时 ld 将生成库。使用 -ztext 生成失败意味着无法对库的一个或多个组件共享,不过,也许能共享某些其他组件。此时就产生了性能问题,这最好由您-程序员来解决。