共有オブジェクトが実行可能ファイルまたは別の共有オブジェクトを作成するために使用される場合、リンカーは、いくつかの整合性検査を実行して、出力ファイル内に記録される依存関係名すべてが一意になるように保証します。
依存関係名の衝突は、リンク編集への入力ファイルとして使用される 2 つの共有オブジェクトがどちらも同じ soname を含む場合に発生する可能性があります。次に例を示します。
$ cc -o libfoo.so -G -K pic -h libsame.so.1 foo.c $ cc -o libbar.so -G -K pic -h libsame.so.1 bar.c $ cc -o prog main.o -L. -lfoo -lbar ld: fatal: file ./libbar.so: recording name `libsame.so.1' ¥ matches that provided by file ./libfoo.so ld: fatal: File processing errors. No output written to prog |
記録された soname を持たない共有オブジェクトのファイル名が、同じリンク編集中に使用された別の共有オブジェクトの soname に一致する場合にも同様にエラー条件が発生します。
生成中の共有オブジェクトの実行時名が、その依存関係の 1 つに一致する場合にも、リンカーは名前の衝突を報告します。次に例を示します。
$ cc -o libbar.so -G -K pic -h libsame.so.1 bar.c -L. -lfoo ld: fatal: file ./libfoo.so: recording name `libsame.so.1' ¥ matches that supplied with -h option ld: fatal: File processing errors. No output written to libbar.so |