binutils 및 newlib를 사용하여 llvm + clang 툴체인을 만드는 방법과 사용 방법에 대한 정보가 있습니까?llvm + clang을 사용하여 stm32 용으로 컴파일하는 방법
- 호스트 : 리눅스, AMD64
- 대상 : 피질 - m3, STM32
- C-lib 디렉토리 : newlib에
- 어셈블러 : GNU
binutils 및 newlib를 사용하여 llvm + clang 툴체인을 만드는 방법과 사용 방법에 대한 정보가 있습니까?llvm + clang을 사용하여 stm32 용으로 컴파일하는 방법
불행하게도, 지금 그 소리가 지원하지 않는 등 유연한 크로스 컴파일 설정. 따라서 대부분의 경우 필요한 모든 인수를 사용하여 필요한 도구를 호출해야합니다.
--target = thumbv7-eabi configure 인수를 사용하여 llvm + clang 빌드를 시작하십시오 (이 경우 어제 기준으로 llvm + clang이 필요합니다). --enable-targets = arm도 지정할 수 있습니다. 이것은 clang에게 기본적으로 엄지 코드를 생성하도록 지시합니다. 이 후 clang -mcpu = cortex-m3을 호출하여 코드를 생성 할 수 있습니다.
당신이 필요한 모든을 제공해야합니다 등 -I/-L을 통해 손으로/라이브러리 경로를 포함
당신이 해킹 일부 C++, 당신은 "hostinfo는"을 필요 쓸 수에 만족하면, 그렇게 올바른 도구를 호출하고 자동으로 올바른 경로를 제공합니다. GitHub의
https://github.com/dwelch67/mbed_samples/
내가 GitHub의에있는 다른 프로젝트에서 mbed_samples에서
봐 (즉, 사용 LLVM은, 기반 팔 MIPS 기반 및 MSP430 기반). 선반에서 llvm 도구 (잘 clang)는 ARM 등을위한 크로스 컴파일을 지원합니다.
mbed는 lpc cortex-m이고 stm32는 st cortex-m이며 기본은 동일한 변경 레지스터 설정입니다. stm32 샘플 예제를 가지고 있는데, lmvm (64 비트 AMD 리눅스 호스트 사용)을 사용하는 stm32 특정 예제가 필요하다면 문제가되지 않습니다.
GMC와 LLVM을 지원하는 CMake를 기반으로하는 펌웨어 프레임 워크 PolyMCU https://github.com/labapart/polymcu을 만들었습니다. CMake를 기반으로하기 때문에 Linux/Windows/MacOS에서 펌웨어를 빌드 할 수 있습니다. 또한 Newlib을 사용합니다 - 귀하의 모든 요구 사항이 보이는 것입니다! 내가 GCC와 LLVM은 ARM 코어 텍스 M에 크기를 구축 비해 곳
가 나는 또한 블로그를 썼다 : http://labapart.com/blogs/3-the-importance-of-the-toolchain-version-in-embedded-space 재미있는 결과를 연타가 ... 코드는 코어 텍스 M에 GCC보다 훨씬 더 큰 생성
은 https ://github.com/dwelch67/stm32vld/tree/master/stm32f4d 지금 몇 가지 stm32 예제가 있습니다. gcc 및 llvm/clang –
MIPS 및 MSP430 btw에 대한 언급 (및 일관된 작업 수행)에 감사드립니다. – pfalcon