2013-03-11 3 views
5

내가, 내가 3.2의 LLVM 소스를 가져온 것 중에 최고 빌드 옵션이 RaspbianLLVM은/ARM에 대해 라즈베리 파이

에 LLVM 3.2 무엇인지 설명을 추구하고있어이 옵션을 구축하고 내 설정은 다음과 같습니다

cd llvm-3.2.src 
./configure --build=armv6-unknown-linux-gnueabi \ 
--host=armv6-unknown-linux-gnueabi \ 
--target=armv6-unknown-linux-gnueabi --with-cpu=arm1176jzf-s \ 
--with-float=hard --with-abi=aapcs-vfp --with-fpu=neon \ 
--enable-targets=arm --enable-optimized --enable-assertions 
make REQUIRES_RTTI=1 
sudo make install 

빌드하는 데 꽤 많은 시간이 걸리는 것을 들었습니다. 지금은 몇 시간 씩 움직여서 행복하게 운영 할 수있게되었습니다.

그것은 장기 빌드 프로젝트의

그래서 필요한 경우 :

답변

8

내가 Raspbian을 위해 LLVM을 크로스 컴파일 권하고 싶습니다 빌드를 다시 실행에 관한 양심의 가책이 없습니다. Pi 자체에 구축하는 데는 시간이 오래 걸립니다.

먼저 debootstrap을 사용하여 작동하는 루트 fs를 얻으십시오 (또는 기존 Raspbian 설치를 복제하거나 다운로드 한 이미지의 압축을 푸십시오). 절대 심볼릭 링크를 상대 경로로 대체해야하고 빌드 오류에주의해야합니다.

clang이 제대로 작동하고 최신 버전인지 확인하십시오 (ARM 타겟 지원으로 빌드하는 것을 잊지 마십시오).

그런 다음, (이 단계에서 당신의 루트 파일에 chroot를해서는 안됩니다!) 다음 CMake 툴체인 정의와 LLVM을 크로스 컴파일 :


set(toolchain_dir /path/to/your/chroot-raspbian-armhf/) 
set(toolchain_bin_dir ${toolchain_dir}/usr/bin) 
set(toolchain_inc_dir ${toolchain_dir}/usr/include) # was /include 
set(toolchain_lib_dir ${toolchain_dir}/usr/lib) 

set(CMAKE_SYSTEM_NAME Linux CACHE INTERNAL "system name") 
set(CMAKE_SYSTEM_PROCESSOR arm CACHE INTERNAL "processor") 
set(CMAKE_C_COMPILER clang) 
set(CMAKE_CXX_COMPILER clang++) 
set(CMAKE_C_FLAGS "-O2 -integrated-as -target armv6-linux-gnueabihf -mfloat-abi=hard --sysroot=${toolchain_dir}" CACHE INTERNAL "c compiler flags") 
set(CMAKE_CXX_FLAGS "-O2 -integrated-as -target armv6-linux-gnueabihf -mfloat-abi=hard --sysroot=${toolchain_dir}" CACHE INTERNAL "cxx compiler flags") 

set(link_flags "-L${toolchain_lib_dir} -ldl") 

set(CMAKE_EXE_LINKER_FLAGS ${link_flags} CACHE INTERNAL "exe link flags") 
set(CMAKE_MODULE_LINKER_FLAGS ${link_flags} CACHE INTERNAL "module link flags") 
set(CMAKE_SHARED_LINKER_FLAGS ${link_flags} CACHE INTERNAL "shared link flags") 
set(CMAKE_FIND_ROOT_PATH ${toolchain_lib_dir} CACHE INTERNAL "cross root directory") 
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "") 
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY CACHE INTERNAL "") 
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY CACHE INTERNAL "") 

그 대상을 유의하시기 바랍니다 (cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/the/file/above.txt 사용) armv6-linux-gnueabi이 아니라 armv6-linux-gnueabihf이어야합니다.

+0

굉장한 감사 - 나는 그것을 시험해 볼 것이다! –

+0

링크가 MacKeeper 스팸 페이지로 이동합니다. – mtnygard

+0

@mtnygard, 와우, 내가 본 중 최악의 링크 썩음 –