clang-3.5パッケージのインストール後にclangとclang ++が見つからない


26

clang-3.5パッケージをインストールした後、コマンドラインでclangまたはclang++を入力すると、それらのプログラムがどのパッケージにあるかを示すメッセージが表示されますclang-3.5

元のインストールは次のコマンドで実行されました。

sudo apt-get install clang-3.5 llvm

build-essential 以前にインストールされました。

何が起こったのかについてのアイデアはありますか?

回答:


30

そこにありますが、まだclang-3.5と呼ばれています。

あなたはそれをclang-3.5(またはclang++-3.5)として実行するか、私と同じようにシンボリックリンクを設定することができます(通常のclangのインストールは機能しませんでした):

sudo ln -s /usr/bin/clang-3.5 /usr/bin/clang
sudo ln -s /usr/bin/clang++-3.5 /usr/bin/clang++

perhapsい回避策、おそらく。しかし、少なくとも今のところは動作します:)


打ち鳴らす-6.0のために、私はほかにこれを実行する必要があります:ln -s /usr/bin/llc-6.0 /usr/bin/llc
フォルツァアズーリ

12

あなたのデフォルトとして打ち鳴らすを使用するための適切な方法ccc++使用することですupdate-alternatives

同じまたは類似の機能を実行する複数のプログラムを、単一のシステムに同時にインストールすることができます。たとえば、多くのシステムには複数のテキストエディターが同時にインストールされています。これにより、システムのユーザーに選択肢が与えられ、必要に応じてそれぞれが異なるエディターを使用できるようになりますが、ユーザーが特定の設定を指定していない場合、プログラムが適切なエディターを選択して起動することは困難です。

したがって、最初に追加する必要がありますclang-3.5またはのclang++-3.5代わりに、例えばgcc、およびg++

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang-3.5 100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100

いつでも切り替える必要がある場合、gccまたはオプションg++を使用できる--config場合:

sudo update-alternatives --config c++

引数に関する追加の説明を追加できますか?なぜcc/ c++2つのパスの間ですか?100最後にそれは何ですか?優先度?
-helmesjo

見てくださいupdate-alternativesドキュメントを。私がここで要約するものよりも良い説明があると思います。
ヤンFOTO

5

Ubuntu 15.04では、clang-xxパッケージに沿ってclangパッケージをインストールすることもできます。その後、clang ++と入力すると、対応する実行可能ファイルが見つかります。

sudo apt-get install clang

「apt-get install clang」は単に最新バージョンをインストールしてから使用しませんか?OPがv3.5をインストールしている場合、彼は最新のものを使用したくありません。
-amfcosta

4

Yan Fotoの答えに追加します(そして、あなたの目的が使用可能にするclangが、必ずしもそれを使用する必要がない場合cc)、実際にプログラムのセット全体を一度に追加することができます

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 380 \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 \
--slave /usr/bin/clang-check clang-check /usr/bin/clang-check-3.8 \
--slave /usr/bin/clang-query clang-query /usr/bin/clang-query-3.8 \
--slave /usr/bin/clang-rename clang-rename /usr/bin/clang-rename-3.8

(各clangバージョンに付属するバイナリのセットは異なる場合があることに注意してください。たとえば3.6にはありますがclang-tblgen、3.8にはありません。)

インストールするclangのバージョンごとにこれを繰り返すと、1つのupdate-alternativesコマンドを使用してそれらを切り替えることができます。

(一方、明らかに、これらのリンクをUbuntuパッケージに含めるかどうかについては、まだ議論が続いています:https : //bugs.launchpad.net/ubuntu/+source/llvm-3.1/+bug/991493


0

ホームディレクトリに.bashrcファイルを作成します。このコード行を入力します。

エイリアスclang ++ = "clang ++-3.5"

ターミナルを閉じます。もう一度開きます。その後、プログラムを再度コンパイルしてください。

コマンド名 "clang ++-3.5"でバージョンを指定しない限り、clangが機能しないことを私が知ることができます。そのため、.bashrcファイルで名前をエイリアスしました。したがって、「clang ++」と入力するだけです。

ところで、clang 3.5をダウンロードしたので、以前のアドバイスをバージョンに合わせて調整してください。


0

clangが正しくインストールされている場合、プログラムの名前とともにバージョン番号を入力する手間を省く別の非常に簡単な方法は、たとえば(clang ++-3.5がインストールされている)自動補完機能を使用することです。

clang+[TAB][ENTER]

ですから、タイプするだけでclang+、ヒットしTab、そしてEnter。ディレクトリ名、ファイル名などで同じように機能します(ただし、プログラムの複数のバージョンがインストールされている場合、これは役に立ちません)。


0

これにより、clang- 3.8(Ubuntu 16.04と同様)がインストールされている場合、clang- 4.0の update-alternativesが設定されます。

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-4.0 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-4.0 100
sudo update-alternatives --install /usr/bin/clang-apply-replacements clang-apply-replacements /usr/bin/clang-apply-replacements-4.0 100
sudo update-alternatives --install /usr/bin/clang-check clang-check /usr/bin/clang-check-4.0 100
sudo update-alternatives --install /usr/bin/clang-query clang-query /usr/bin/clang-query-4.0 100
sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-4.0 100
sudo update-alternatives --install /usr/bin/scan-build scan-build /usr/bin/scan-build-4.0 100
sudo update-alternatives --install /usr/bin/scan-view scan-view /usr/bin/scan-view-4.0 100

0

シンボリックリンクに関するJohann Wendinの回答に追加。でルートシェル一度にすべての様々な打ち鳴らすツールをリンクすることができます。

例えば

find /usr/bin/ -name clang*  | sed -E 's/^(\/usr\/bin\/.*)(\-[0-9]*)$/ln -s -v \1\2 \1/' | xargs -d '\n' -n 1 bash -c

その後、以下について繰り返します。

llc-*
lld-*
lldb-*
llvm-*

次に、小さな選択だけでなく、すべてをリンクする必要があります。(たぶん私はまだ何かを忘れていました)。

これにより、/ usr / binのパターンに従ってすべてのファイルが検索され、末尾の数字(-8または-9または-10)が削除され、それぞれにシンボリックリンクが作成されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.