다음 단계별 안내 를 따랐으며 약간의 혼란을 겪고 나서 코드 : 블록 및 MinGW를 사용하여 컴파일 할 수있는 clang. 좋아, 이제 Clang 모듈을 일식에 추가하고 (왜 네 개가있을 때 하나의 IDE를 갖는지) 컴파일을 시작할 수 있습니다.
표준 라이브러리를 사용하지 않지만 불행히도 이것을 컴파일하려고 할 때 간단한 프로그램을 컴파일 할 수 있습니다 :
#include <iostream>
using namespace std;
int main()
{
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
먼저 나는 이것을 얻는다 :
..\src\test.cpp:9:10: fatal error: 'iostream' file not found
그래서 Mingw 헤더를 포함 경로에 추가합니다;그러면 나는 이것을 얻는다 :
'fatal error: 'bits/c++config.h' file not found'
이상하다. 해당 파일이 '비트 /'가 아닌 경우 MingW가 작동하는 이유는 무엇입니까? 컴파일러에 내장되어 있습니까? 걱정하지 마세요. 구현을 찾아 'bits /'에 파일을 만듭니다.
그런데 clang이 전처리기를 올바르게 구현하지 않았거나 전처리기에 대한 나의 이해가 잘못되었다는 것을 암시하는 이상한 오류를 포함하여 전체 오류가 발생합니다.
C:\Program Files\CodeBlocks\MinGW\lib\gcc\mingw32\4.4.1\include\c++/cwchar:45:26: error: expected value in expression
#if _GLIBCXX_HAVE_WCHAR_H
그리고 더 많은 것들. 그럴까요
#if defined(_GLIBCXX_HAVE_WCHAR_H)
또는
#ifdef _GLIBCXX_HAVE_WCHAR_H?
만일 경우 MinGW 표준 라이브러리가 잘못되었습니다.
gcc를 교체하기 위해 clang을 떨어 뜨릴 수 있다고 가정하고 gnu 표준 라이브러리와 작동하도록 설계되지 않았다고 가정합니다. 증거로 백업 된 확인 또는 거부는 가장 환영받을 것입니다!
그래서 아무도 Windows PC에서 clang을 컴파일하는 가장 확실한 방법이 있습니까? 온라인, 특히 창 관련 정보가 부족합니다.
clang과 LLVM이 내가 읽은 것에서 훌륭하게 들리면 작동하도록 정말로 열심입니다. 도움을 주시면 감사하겠습니다.
감사합니다.
- 답변 # 1
- 답변 # 2
귀하의
MinGW
버전에 따라 (그래서 gcc 버전이 포팅 됨) 헤더가 약간 흩어져있을 수 있습니다 ...파일
clang/lib/Frontend/InitHeaderSearch.cpp
에서 많은 하드 코딩 된 경로를 찾을 수 있습니다. 문제는 각각 버전에 따라 다르므로 MinGW 버전이없는 경우 추가하여 자유롭게 추가하십시오 (그리고 cfe-commit에 패치를 게시하여 Clang의 메인 라인에 통합하도록 요청하십시오).개인적으로 MinGW/msys에서 사소한 문제만으로 실행합니다 (
:
가있을 때 msys 셸이 입력을 엉켜서 여러 테스트 사례가 실패합니다) in ...), CodeBlocks에서 사용하려고 시도하지 않았습니다 (명령 줄에 익숙합니다).도쿠 미가 MinGW 통합을 지켜보고 있다면 Francois Pichet은 VC ++/MFC 헤더 (예 : 주요 공헌자)와의 호환성에 대한 작업을 이끌고 있으며 @rubenvb는 현재 libc ++에 패치를 적용하려고합니다. Windows에서 작업 (libc ++은 Windows에서 아직 컴파일되지 않습니다). 3 가지 영역은 거의 독립적이며 다른 기술과 지식이 필요합니다.
- 답변 # 3
비슷한 문제가있었습니다. Mike Dinsdale의 답변에 의해 지정된 경로의 GCC 4.7의 아날로그를 사용하고 clang 실행 파일에 대한 향후의 모든 호출에 대해 '-isystem'플래그 (rubenvb가 빌드 한 mingw64 배포의 Clang 3.2)로 지정했습니다. 스크립트). 이 디렉토리는system포함 디렉토리로 명시 적으로 지정되므로이 디렉토리에서 생성 될 수있는 모든 잠재적 경고는 자동으로 억제됩니다.
tl;dr :-isystem플래그는 Clang에서재 컴파일없이시스템포함 디렉토리를 지정합니다
- 답변 # 4
Clang은
clang/lib/Frontend/InitHeaderSearch.cpp
파일에 정의 된대로 검색 위치를 하드 코딩했습니다. 댓글FIXME: temporary hack: hard-coded paths
근처 .이 페이지에 대한 메모가 있습니다 : http://clang.llvm.org/get_started.html
따라서 다른 컴파일러 (MingW)에서 포함 경로를 가져 와서 Clang으로 하드 코딩하면일 수도 있습니다. (Clang의 Windows 지원이 아직 100 %인지 확실하지 않습니다)
- 답변 # 5
Windows 10/VS 2017/Clang 4.0.0누락
stdlib.h
C 코드에서. 이것이 내가 해결 한 방법입니다 :와이즈 비즈 오픈 . 여기에서 clang을 실행하면 "missing headers"오류가 제거됩니다.
여전히 작동하지 않으면 Clang이 플랫폼 별 정보를 VS 또는 MinGW로 남겨두기 때문에 실제 헤더 및/또는 라이브러리가 누락 된 것입니다.
x86_x64 Cross Tools Command Prompt for VS 2015/2016/2017
로 이동\Program Files (x86)\Windows Kits\10\Include\
에 대한 서브 디렉토리 (있는 경우)를 검색하십시오. 그리고 공동. 찾을 수 없으면 최신stdlib.h
를 설치해야합니다. Visual Studio (설치 프로그램)로 이동하여수정을 클릭하여 패키지를 추가합니다.Windows 10 SDK
- c++ : vulkan을 mingw 64 비트로 실행할 수 없습니다.
- c++ : wchar.h 해당 파일 또는 디렉토리 없음
- c++ : -lcrypto를 정의되지 않은 참조와 연결하는 Mingw32 오류
- c++ : ws2def.h가 없습니다. 어떤 패키지에서 다운로드 할 수 있습니까?
- c++ : GCC : 다른 폴더의 헤더 파일을 포함하는 방법은 무엇입니까?
- c++ : MinGW 7.3.0 32 비트에서 'int'에서 'void (*) (void *)'로의 잘못된 변환
- Ctrl + Shift + B로 빌드 할 때 VS Code 터미널이 c++ 프로그램을 실행하지 않습니다.
- c++ : MinGW x86_64-w64-mingw32 b2 빌드 부스트 라이브러리 소스에서. 링크 라이브러리를 찾을 수 없습니다
clang
를 구축하기위한 몇 가지 지침이 있습니다. 이 페이지 (사이드 바의 "Clang Development"부분에 숨겨져 있습니다 ...). MinGW의 경우 "Unix-like Systems"섹션을 원합니다. 까다로운 부분은 5 단계이며 C ++ 표준 라이브러리의 경로를 설정하는 방법을 알려줍니다. 이것들은clang/lib/Frontend/InitHeaderSearch.cpp
의 코드에 추가되어야합니다. . 내 컴퓨터에서 이렇게 생겼습니다이들 모두가 필요한지는 확실하지 않습니다!