2013-03-11 14 views
5

Я ищу пояснить, что лучшие варианты сборки предназначены для LLVM 3.2 на RaspbianLLVM параметры сборки для ARM/RaspberryPi

Я принес источник 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

Я бы рекомендовал кросскомпилирую LLVM для Raspbian. Построение его на Pi само по себе занимает много времени.

Сначала создайте рабочий корень fs с помощью debootstrap (в качестве альтернативы просто клонируйте существующую установку Raspbian или распакуйте загруженное изображение). Возможно, вам придется заменить некоторые абсолютные символические ссылки на относительные, следите за ошибками сборки.

Удостоверьтесь, что у вас есть действующая и достаточно недавняя установка clang (не забудьте построить ее с поддержкой ARM).

Тогда кросс-компиляции LLVM со следующим определением ToolChain CMake (вы не должны Смена корневой файловой системы в ваш корневой фс на данном этапе!):


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-gnueabihf, а не armv6-linux-gnueabi.

+0

Удивительная благодарность - я попробую! –

+0

Ссылка теперь идет на страницу спама MacKeeper. – mtnygard

+0

@mtnygard, ничего себе, худший вид гнили, которую я когда-либо видел –