clang-3.5 패키지 설치 후 clang 및 clang ++을 찾을 수 없음


26

clang-3.5패키지를 설치 한 후 clang또는 clang++명령 행에 입력 하면 해당 프로그램을 찾을 수있는 패키지를 알리는 메시지가 표시됩니다. clang-3.5다시 설치를 시도하면 apt가 이미 설치되어 있고 최신 버전임을 나타냅니다.

원래 설치는 다음 명령으로 수행되었습니다.

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++

추악한 해결 방법; 그러나 적어도 그것은 지금 작동합니다 :)


clang-6.0의 경우 다음을 추가로 수행해야합니다.ln -s /usr/bin/llc-6.0 /usr/bin/llc
forza azzurri

12

기본값으로 연타를 사용하는 적절한 방법 ccc++사용하는 것입니다 update-alternatives:

동일하거나 유사한 기능을 수행하는 여러 프로그램이 단일 시스템에 동시에 설치 될 수 있습니다. 예를 들어, 많은 시스템에는 한 번에 여러 개의 텍스트 편집기가 설치되어 있습니다. 이는 시스템 사용자에게 선택권을 부여하여 원하는 경우 각각 다른 편집기를 사용할 수있게하지만 사용자가 특정 환경 설정을 지정하지 않은 경우 프로그램이 편집기를 선택하기가 어렵습니다.

먼저 예를 들어 다음 과 같이 clang-3.5또는 clang++-3.5대안을 추가해야합니다 .gccg++

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++두 경로 사이에? 그 무엇 100결국은? 우선 순위?
helmesjo

update-alternatives문서를 살펴보십시오 . 나는 그들이 여기에 요약 한 것보다 더 나은 설명을 가지고 있다고 생각합니다.
Yan Foto

5

Ubuntu 15.04에서는 clang-xx 패키지와 함께 clang 패키지를 설치할 수도 있습니다. 그런 다음 clang ++을 입력하면 해당 실행 파일을 찾을 수 있습니다.

sudo apt-get install clang

"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에 대해이 작업을 반복하면 단 하나의 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에 대한 업데이트 대안을 설정해야합니다 .

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의 답변에 추가하십시오. A의 루트 쉘 한 번에 모든 다양한 연타 도구를 연결할 수 있습니다 :

예 :

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.