2011-03-08 5 views
4

LLVM 컴파일러 툴체인에는 일반 gcc와 호환되는 gcc가 있습니다. llvm-gcc를 사용하면 얻을 수있는 이점은 임의의 타겟으로 간다는 것입니다. 즉, mips-apple-darwin과 같이 임의의 아키텍처로 컴파일하려고하면 일반 gcc가 그런 대상을 표시하지 않습니다. 그러나 llvm-gcc는 실제로 밉스 프로세서에서 Mac OS X 용 컴파일러를 빌드합니다.llvm 용 binutils가 있습니까?

그러나 여기는 잡기입니다 : 무작위 타겟으로 빌드하려면 이미 해당 타겟 용으로 빌드 된 binutils가 필요합니다. 따라서 llvm이 컴파일되지만 binutils는 컴파일 할 수없는 대상이있는 경우 GNU Binutils가 해당 대상을 지원하지 않기 때문에 컴파일러를 만들 수 없습니다.

그래서 ... 여기에 질문입니다 : GNU Binutils와 호환되는 llvm-gcc와 같은 llvm-binutils가 있습니까? (목록에서 임의의 대상에 구축 한이 아니라 하나를 의미한다.)

편집 : 임의함으로써

, 나는 LLVM-GCC를 실행할 때 대상을 선택하지 않는 말은, 대상을 선택 내가 llvm-gcc를 컴파일 할 때. 의미 : mips-apple-darwin 용 GCC를 컴파일하려고하면 지원되지 않는 대상이됩니다. 그러나 mips-apple-darwin 용 llvm-gcc를 빌드하면 mips-apple-darwin-as 및 mips-apple-darwin-ld가있는 한 작동합니다.

+0

참고 : LLVM 2.9는 트랙에 있으며 llvm-gcc를 지원하는 마지막 버전이어야합니다. 3.0부터 LLVM은 CLang 또는 Dragon Egg를 사용합니다. –

답변

2

내가 알 수있는 한, LLVM은 임의의 타겟에 대해 컴파일하지 않습니다. 당신은 당신의 타겟에 맞는 모든 include와 definition을 가지고 있어야하고, 일반적으로 llvm은 당신의 말한 타겟을위한 코드를 생성하기위한 back-end를 가지고 있습니다. "C 또는 C++ 코드를 플랫폼 독립적 인 LLVM 비트 코드로 컴파일 할 수 있습니까?" http://llvm.org/docs/FAQ.html

질문에 대답하기 위해 llvm은 GNU binutils를 사용하지 않으며 llvm은 자체 'binutils'를 사용하여 코드를 생성합니다 (LLVM 코어 프로젝트라고 함). 디스어셈블러와 디버거는 LLDB 프로젝트의 일부입니다.

LLVM은 독립성을 가져 왔지만 언어 수준에 있습니다. 프로젝트는 C/C++, Ada, Fortran 등으로 코딩 될 수 있습니다 ... llvm은 코드를 중간 표현으로 변환 할 수있는 기능을 제공합니다. IR은 결국 코드를 ​​생성합니다.

1

llvm-gcc는 임의의 타겟을 지원하지 않습니다. llvm-gcc는 특정 대상에 맞게 작성해야합니다. clang + LLVM 수 있습니다. 나는 ellcc로 정확하게하려고 노력하고있다 : http://ellcc.org. 나는 어셈블리와 링크를 위해 binutils를 사용하고있다.