-qpic (-fPIC)

适用的调用

表 1. 接受给定选项的调用
选项 xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
-qpic
-fPIC    
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

对象代码控制

等效编译指示

无。

用途

生成独立于位置的代码 适合 以在共享库中使用。

语法

读取语法图跳过可视语法图 -f PIC
读取语法图跳过可视语法图 -qpic =smalllarge

缺省值

  • -qpic=small

指定不带任何子选项的 -qpic 等同于 -qpic=small

参数

小型
指示编译器假定 目录 (TOC) 的大小不大于 64 Kb。 -qpic=small 生效时,编译器将为每个 TOC 访问生成一个指令。
大型
指示编译器假定 TOC 的大小大于 64 Kb。 -qpic=large 生效时,编译器将为每个 TOC 访问生成两个指令,以扩大访问范围。 当目录大于 64 Kb时,这有助于避免 TOC 溢出的情况。

使用量

指定 -qpic=large 的效果与将 -bbigtoc 传递到 ld 的效果相同。

您可以对应用程序中的不同编译单元使用不同的 TOC 访问选项。

注: 对于 TOC 大小大于 64K的应用程序,使用 -qpic=large 可提高性能。 但是,对于其 TOC 小于 64K 的应用程序,使用 -qpic=large 反而会降低程序性能。 要决定是否使用 -qpic=large,请先使用 -qpic=small 编译该程序。 如果生成了溢出错误消息,请改为使用 -qpic=large

预定义的宏

无。

示例

要编译共享库 libmylib.so,请使用以下命令:
xlc mylib.c -qpic=small -c -o mylib.o 
xlc -qmkshrobj mylib -o libmylib.so.1

相关信息