共用ライブラリーでの使用に適した位置独立コードを生成するようにコンパイラーに命令する。
.-nopic-------------. | .-=--small-. | >>- -q--+-pic--+----------+-+---------------------------------->< '-=--large-'
ここで、
nopic | Position Independant Code を生成しないようコンパイラーに命令します。 |
pic | Position Independant Code を生成するようコンパイラーに命令します。 |
small | グローバル・オフセット・テーブルのサイズが 64 Kb 以下であると想定するようにコンパイラーに命令します。 |
large | サイズが 64 Kb よりも大きいグローバル・オフセット・テーブルを許可します。 これにより、テーブルにより多くのアドレスを保管できます。 通常、このオプションを指定して生成されたコードは、-qpic=small を 指定して生成されたコードよりも大きくなります。 |
-qpic がサブオプションなしで指定された場合、-qpic=small が想定されます。
-qmkshrobj コンパイラー・オプションが指定されると、-qpic オプションが暗黙指定されます。
-q64 を指定すると、自動的に -qpic が暗黙指定されます。
共用ライブラリー libmylib.so をコンパイルするには、以下のコマンドを使用します。
xlc mylib.c -qpic -Wl, -shared, -soname="libmylib.so.1" -o libmylib.so.1
-shared と -soname オプションについては詳しくは、ご使用のオペレーティング・システムの資料で ld コマンドを参照してください。
関連情報