clang 5.0 설치 및 C ++ 17 사용


17

3 일 동안 우분투 16.04 시스템에 clang 5.0을 설치하려고했습니다. 나는 다양한 가이드를 시도 했지만 아무것도 효과가없는 것 같습니다. SVN에서 최신 버전을 가져 와서 빌드 / 설치 ( 여기에 자세히 설명되어 있음 )를 시도하면 간단한 프로그램을 컴파일하려고하면 다음이 발생합니다.

> clang++ basic.cpp
/usr/include/wchar.h:39:11: fatal error: 'stdarg.h' file not found
# include <stdarg.h>

그런 다음 빌드하기 전에 -DGCC_INSTALL_PREFIX플래그를 설정 cmake했지만 더 나은 오류가 발생합니다.

> clang++ basic.cpp
fatal error: 'iostream' file not found
#include <iostream>

내가 밟은 단계는 (위 가이드에서)입니다.

> cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/ \
-G "Unix Makefiles" path/to/llvm
...
> make
...
> make check-clang
...
> make install-clang
...

누군가 나를 바보처럼 취급하고 clang 5.0을 설치하는 방법을 단계별로 설명 할 수 있습니까? 아니면 저 같은 기본 바보조차 따라갈 수있는 가이드를 알려주세요. C ++ 17 용 libc ++을 빌드하고 설치하는 방법을 설명 할 수 있다면 영원히 감사하겠습니다.

업데이트 : clang을 사용한 자세한 컴파일의 출력이므로 clang을 올바르게 설치하지 않은 것 같습니다.

...
#include <...> search starts here:
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include

그리고 이것은 g ++의 출력입니다.

#include <...> search starts here:
 /usr/include/c++/5
 /usr/include/x86_64-linux-gnu/c++/5
 /usr/include/c++/5/backward
 /usr/lib/gcc/x86_64-linux-gnu/5/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
...

이 명령의 출력은 무엇입니까 :dpkg -l libstdc++-5-dev | tail -1
Ravexina

당신은 한하십니까 build-essential설치되어 있습니까?
Ravexina

@Ravexina :ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.4 amd64 GNU Standard C++ Library v3 (development files)
Steve D

@Ravexina : 그리고 예, 빌드 필수가 설치되었습니다.
Steve D

답변:


33

llvm.org 리포지토리에서 clang-5 설치

먼저 llvm.org 리포지토리를 소스 목록에 추가해야합니다.

deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main

nano를 열고 위 파일을이 파일에 추가하십시오 :

sudo nano /etc/apt/sources.list.d/llvm.list

리포지토리 키를 추가하면 apt다운로드 한 패키지를 확인할 수 있습니다.

 wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -

그런 다음 목록을 업데이트하십시오.

sudo apt-get update

그런 다음 clang-5를 설치하십시오.

sudo apt-get install clang-5.0 lldb-5.0 lld-5.0

작동해야합니다.

새로 추가 된이 저장소에서 사용 가능한 모든 패키지 목록을 가져 오려면 다음을 수행하십시오.

grep -i package: /var/lib/apt/lists/apt.llvm* | cut -f3 -d: | sort | uniq

다음과 같은 목록을 제공합니다.

clang-5.0 
clang-5.0-doc 
clang-5.0-examples 
libclang-common-5.0-dev
...

그런 다음 원하는 것을 설치할 수 있습니다.


컴파일 문제를 해결하는 데 도움이 될 수 있습니다

언급 된 헤더 파일이 오류에 존재하지 않습니다 : 패키지 stdarg.h의 일부입니다 libstdc++-5-dev.

내 컴퓨터 에이 패키지가 있으므로 다음을 실행하면 :

aptitude why libstdc++-5-dev

나는 얻을 것이다 :

i   build-essential Depends g++ (>= 4:5.2)                            
i A g++             Depends g++-5 (>= 5.3.1-3~)                       
i A g++-5           Depends libstdc++-5-dev (= 5.4.0-6ubuntu1~16.04.4)

따라서 build-essential패키지 를 설치하면 오류를 해결 해야하는 것처럼 보입니다 . 원하는 작업이 확실하지 않습니다.


나는 한 build-essential설치. 그러나 빌드 필수 라인이 없다는 것을 제외하고aptitude why libstdc++-5-dev 는 내 출력 이 정확히 당신과 동일 합니다.
Steve D

@SteveD 확실하지 않지만 아마도 저장소의 일부가 저장소에서 설치되고 다른 부분이 수동으로 설치
되기 때문일 수 있습니다

질문 본문을 문제라고 생각하는 것으로 업데이트했습니다. 아마도 문제를 해결하는 방법을 알고 있습니까?
Steve D

@SteveD 출력은 내 눈에 그렇게 도움이되지 않습니다. 아마도 다른 사람들이 더 도움이 될 수 있습니다. 왜 저장소에서 설치하지 않습니까? 당신의 문제가 사라질 가능성이 높다고 생각합니다.
Ravexina

리포지토리에서 사용할 수없는 clang 5.0이 필요합니다.
Steve D
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.