私のホームディレクトリのubuntu10.04にインストールされているカスタムビルドのgcc4.6.0は、ほとんどの場合、カスタムビルドの代わりにシステムlibstdc ++をリンクします(lddで証明されています)。さらに不可解なことに、この新しく構築されたgccを使用すると、カスタムコンパイルされたopenmpiライブラリが正しくリンクされます。これは、私がコンパイルした唯一のソフトウェアで、正常に動作します。誰かがこれについて何か説明、または回避策を持っていますか?
ありがとう
構成時にlibstdcをgccに静的にリンクするオプションはありませんか?--disable-正しく機能する方法を理解している場合は共有します。最悪の場合、そのスイッチを使用してgccの別のコンパイルを行い、問題が発生するかどうかを確認します。
エンドユーザー向けの GCC Web サイトで、これがより明確に詳しく説明されていない理由がわかりません。GCC FAQ には、これが一般的な問題であることが明確に記載されていlibstdc++
ます。環境変数は面倒です。リンカをラップすると、誰もそれを行う方法を知りません。編集/etc/ld.so.conf
はオプションではありません。どこにでも追加-Wl,-rpath
して、さあ。最も簡単な解決策はspecs
ファイルです。一般的な 64 ビット x86 Linux システムの場合、カスタム gcc インストールに移動しdirname `g++ -print-libgcc-file-name`
、 を実行しますg++ -dumpspecs > specs
。そのファイルを編集し、*link_command:
セクションを見つけます。%(link_libgcc)
追加後-rpath /home/user/bin/gcc-9/lib64
(もちろん、独自のパスを使用してください)。または、同じ rpath を*link:
セクションの最後に追加します。または、gcc を で構成し--with-specs='%{!static:%x{-rpath=/home/user/bin/gcc9/lib64} %x{-enable-new-dtags}}'
ます。動作するバイナリを生成する独自の C++ コンパイラをお楽しみください。
以下も参照してください。