2013-03-11 28 views
5

Ben 3.2 LLVM kaynağını getirilen en iyi oluşturma seçenekleri RaspbianLLVM/ARM için Raspberry Pi

üzerine LLVM 3.2 için hangi açıklama arayan kulüpler seçenekleri oluşturmak ve benim yapılandırma geçerli:

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 

Yapımın birkaç saat sürdüğünü duydum. Birkaç saat çalışıyor, sadece koşmasına izin vermekten mutlu oldum.

Bu uzun vadeli bir yapı projesi

yüzden gerekirse :)

cevap

8

Ben Raspbian için LLVM çapraz derleme öneriyoruz yapı yineleme sakınca görmezler. Pi'nin kendisi üzerinde inşa etmek yaşları alır. İlk olarak, debootstrap'u kullanarak çalışan bir root (fs) alın (alternatif olarak mevcut Raspbian yüklemenizi kopyalayın veya indirilen bir görüntüyü açın). Bazı mutlak sembolik bağları göreceli olarak değiştirmeniz gerekebilir, derleme hataları için dikkat edin.

Yeterince çalışma ve clang yüklemeniz olduğundan emin olun (ARM hedef desteği ile oluşturmayı unutmayın).

Sonra (bu aşamada kök dosya chroot olmamalıdır!) Aşağıdaki CKağıt araç zinciri tanımıyla LLVM çapraz derleme:


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 "") 

bu hedefi unutmayın (cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/the/file/above.txt kullanın) armv6-linux-gnueabi değil armv6-linux-gnueabihf olmalıdır.

+0

Awesome thanks - Ben bir deneyin! –

+0

Bağlantı şimdi bir MacKeeper spam sayfasına gider. – mtnygard

+0

@mtnygard, vay, şimdiye kadar gördüğüm en kötü bağlantı –

İlgili konular