-qpic (-fPIC)
适用的调用
选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
---|---|---|---|---|
-qpic | ✓ | ✓ | ✓ | ✓ |
-fPIC | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
生成独立于位置的代码 适合 以在共享库中使用。
语法
缺省值
- -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