私はgcc
他のどのコンパイラよりも多く使用しているので、このコンパイラスイートを使用して例を作成しますが、、、、などgcc
、試したほとんどすべてのスイートでこの問題が発生しましmingw
た。clang
msvc
gcc
このフラグを提供します:
-l
名前foo
を入力すると、gccは対応するライブラリを検索します。libfoo
-L
ライブラリが存在するパスを追加すると、gccは必要なライブラリをそのパスで見つかったライブラリと一致させようとします-rpath
基本的に、同じライブラリの異なるパスのプールであるため、実行可能ファイルは、必要に応じて代替を探すのに十分な「スマート」です。
問題は私にとって大きなものであり、これが私の問題を解決するものはなく、このフラグのそれぞれが同じ問題、つまりあいまいさを抱えています。
最良のシナリオにあいまいさを含めずにこれを行う方法がないとわかっているライブラリをリンクしたいだけの場合、私が望むのは次のとおりです。
- 1つの特定のライブラリのみをリンクし、正確な名前とパスで指定した1つのみをリンクします
-l
私のライブラリには名前が付けられてfoo.so
いないため、与えられた名前のようなオートコンプリートメカニズムは避けてくださいlibfoo.so
- リンクされたライブラリの相対パス
- 明示的に指定されたライブラリのセットのみを考慮してください。他の自動化は必要ありません。ライブラリのプール、検索パス、その他はありません。ランダムなライブラリにリンクされた実行可能ファイルではなく、エラーのリストを使用します。
私はさまざまなリリースのさまざまなライブラリを扱うことがよくあります。歴史的および互換性の理由から同じ名前を共有することがよくあります。実行可能ファイルにリンクしたいライブラリを取得できなかったため、コンパイルしてgccにリンクするのは悪夢です。
ありがとう。