3

私のホームディレクトリのubuntu10.04にインストールされているカスタムビルドのgcc4.6.0は、ほとんどの場合、カスタムビルドの代わりにシステムlibstdc ++をリンクします(lddで証明されています)。さらに不可解なことに、この新しく構築されたgccを使用すると、カスタムコンパイルされたopenmpiライブラリが正しくリンクされます。これは、私がコンパイルした唯一のソフトウェアで、正常に動作します。誰かがこれについて何か説明、または回避策を持っていますか?

ありがとう

4

2 に答える 2

2

構成時にlibstdcをgccに静的にリンクするオプションはありませんか?--disable-正しく機能する方法を理解している場合は共有します。最悪の場合、そのスイッチを使用してgccの別のコンパイルを行い、問題が発生するかどうかを確認します。

于 2011-06-15T04:25:40.637 に答える
0

エンドユーザー向けの 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++ コンパイラをお楽しみください。

以下も参照してください。

于 2019-04-25T15:02:09.623 に答える