5

これを機能させることができないようです。--with-gcc-toolchain=私は、equalsの後に、gccがあったディレクトリ()を置く場所を設定しました/usr/lib/gcc-snapshot/bin

「 clanglinkerproblem」の回答も調べましたが、正しい場所を見つけるために受け入れられた回答を取得する方法がわかりません。検索しているすべてのディレクトリが存在することを除いて、シンボリックリンクの回答は機能します(フォルダをgcc-snapshotからインクルードロケーションの1つにコピーしてもlib、役に立たないようです)。

他の質問で示唆されているように、clang++ test.cpp -v:の出力

bob @ bob:〜/ Programming $ clang ++ test.cpp -v
clangバージョン3.3(トランク171350)
ターゲット:x86_64-unknown-linux-gnu
スレッドモデル:posix
"/ home / bob / Programming / build / Release + Asserts / bin / clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name test.cpp -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-linker-version 2.22-momit-leaf-frame-pointer- v -resource-dir /home/bob/programming/build/Release+Asserts/bin/../lib/clang/3.3 -fmodule-cache-path / var / tmp / clang-module-cache -internal-isystem / usr / local / include -internal-isystem/home/bob/programming/build/Release+Asserts/bin/../lib/clang/3。3 / include -internal-externc-isystem / usr / include / x86_64-linux-gnu -internal-externc-isystem / include -internal-externc-isystem / usr / include -fdeprecated-macro -fdebug-compilation-dir / home / bob / Programming -ferror-limit 19 -fmessage-length 80 -mstackrealign -fobjc-runtime = gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -backend-option -vectorize-loops -o / tmp / test-PWiB4M.o -x c ++ test.cpp
LLVM3.3svnに基づくclang-cc1バージョン3.3デフォルトのターゲットx86_64-unknown-linux-gnu
存在しないディレクトリを無視する"/include"
#include "..."検索はここから始まります:
#include <...>検索はここから始まります:
/ usr / local / include
/home/bob/programming/build/Release+Asserts/bin/../lib/clang/3.3/include
/usr/include/x86_64-linux-gnu
/ usr/include
検索リストの終わり。
test.cpp:1:10:致命的なエラー:「iostream」ファイルが見つかりません
#include^
1エラーが生成されました。

clangバージョン3.3(トランクリビジョン171350)

編集:ビルド用のフォルダーに.oファイルがありません。Release+Assertsこれは正常ですか?そうでない場合は、なぜこれが当てはまるのか、どうすれば修正できますか(clangのstdlibとして指定できる場合は、それも機能します)。

編集2:int main(){return 0;}も見つからないため、コンパイルに失敗しますcrtbegin.o。完全な出力は次のとおりです。

/ usr / bin / ld:crtbegin.oが見つかりません:そのようなファイルまたはディレクトリがありません
/ usr / bin / ld:-lgccが見つかりません
/ usr / bin / ld:-lgcc_sが見つかりません
clang:エラー:リンカーコマンドが終了コードで失敗しました1(-vを使用して呼び出しを確認します)

その後の結果-vは上記と同じですが、終了エラーが異なります。

Config.log:
完全なファイルはここにありますが、最初の(コメントではない)行は次のとおりです。$ ../llvm/configure --with-gcc-toolchain=/usr/lib/gcc-snapshot/gcc

4

1 に答える 1

4

私たちが特定した問題は、gccが--prefix = / usr / lib /gcc-snapshotconfigure引数でインストールされたことです。llvmは--with-gcc-toolchain=/ usr / lib / gcc-snapshot/gcc引数で構成されました。これは、gccインストールプレフィックスと同じである必要があります。つまり、-with-gcc-toolchain = / usr / lib/gcc-snapshotです。

質問の現在の最初の行には、「-with-gcc-toolchain =を使用して構成しました。ここで、equalsの後に、gccがあったディレクトリ(/ usr / lib / gcc-snapshot / bin)を配置しました」と現在の最後の行があります。 「最初の(コメントではない)行は次のとおりです:$ ../llvm/configure --with-gcc-toolchain = / usr / lib / gcc-snapshot/gcc」

それは不可解です。フラグを--with-gcc-toolchain=/ usr / lib / gcc-snapshot / binに置いたと思っていたかもしれませんが、実際には--with-gcc-toolchain = / usr / lib/gccを置いていました。 -スナップショット/gcc

とにかく、次のことを試してみるべきだと思います。

  1. ビルドディレクトリ(configureコマンドを実行したディレクトリ、つまりconfig.logファイルを見つけたディレクトリ)を削除するか、名前を変更します。これは/ home / bob / Programming/buildディレクトリだと思います。
  2. ここで、/ home / bob / Programming/buildディレクトリを再度作成します。今は空になっているはずです。
  3. cd / home / bob / programming / build
  4. 次のconfigureコマンドを実行します../llvm/configure--with-gcc-toolchain= / usr / lib / gcc-snapshot
  5. 残りのビルドプロセスを実行します。

問題は、gcc-toolchainプレフィックスを正しく指定しなかったことにあるようです。これは、gccの設定時に使用した--prefixパラメータと同じである必要があります。

ここに結果を報告してください。

gcc4.7をビルドした後に壊れたClang3.2ビルドも参照してください。

于 2013-01-11T03:35:21.267 に答える