4

-Ldir オプションを使用して GNU ld のライブラリ検索パスに追加し、それを広範囲に使用する方法を知っています。しかし、 gccldのマニュアルを読んでわかる限り、ライブラリ検索パスのリストの最後に追加する方法はありません。

-L オプションは先頭に追加し、その後でデフォルトのシステム ライブラリ パスを検索します。しかし、他に見つからない場合はここを見るパスを追加したいと思います。ldでそれを行う方法はありますか?

(-print-search-dirs を使用して) すべての標準ライブラリ ディレクトリを抽出し、それらを -L 検索ディレクトリのリストに希望する順序で追加する、デフォルトの検索パスとしての暗黙の重複の前に追加するハックがらくたソリューションを想像できます。 ..

しかし、もっと良い方法があるはずです...

4

2 に答える 2

0

/etc/ld.so.confファイルには、コンパイル時にライブラリが検索されるディレクトリ パスのシステム全体のリストがあり、そのようなファイルの改行で区切られたエントリの順序が尊重されます。

そのファイルを変更した後、ldconfigを (root として) 実行して、新しい設定がアクティブになるようにする必要があります。

于 2012-09-12T13:33:59.470 に答える
0

私はあなたが望むことを正確に行うことができるとは思わない。ldただし、次のフラグを使用して、含めるライブラリ内のすべてのシンボルを強制的に弱いものにするとどうなりますか。

 -weak_library path_to_library
             This is the same as listing a file name path to a library on
             the link line except that it forces the library and all ref-
             erences to it to be marked as weak imports.

このようにして、他のライブラリがより強力なシンボルで含まれている場合、それらは のシンボルをオーバーライドしますlook-here-if-you-can't-find-it-anywhwere-else.so。に記載されているライブラリで定義されている強力なシンボルがない場合はLD_LIBRARY_PATH、 の弱いシンボルlook-here-if-you-can't-find-it-anywhwere-else.soが使用されます。

于 2012-02-19T20:43:33.293 に答える