2013-03-11 1 views
5

Je Raspberry Pi me demander des précisions sur ce que les meilleures options de construction sont pour LLVM 3.2 sur RaspbianLLVM options de construction pour ARM/

J'ai allé chercher la source LLVM de 3,2, et ma config est:

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 

J'ai entendu dire que cela prend un certain nombre d'heures à construire. Cela fait maintenant quelques heures que je cours, heureux de le laisser courir.

C'est un projet de construction à long terme, donc je ne hésitons pas à refaire la construction si besoin :)

Répondre

8

Je vous recommande la compilation croisée LLVM pour Raspbian. Construire sur Pi lui-même prend des âges. Commencez par obtenir une racine fonctionnelle en utilisant debootstrap (vous pouvez également cloner votre installation Raspbian existante ou décompresser une image téléchargée). Vous devrez peut-être remplacer certains liens symboliques absolus par relatifs, attention aux erreurs de compilation.

Assurez-vous que vous disposez d'une installation récente et fonctionnelle de clang (n'oubliez pas de la compiler avec la prise en charge des cibles ARM).

Ensuite, une compilation croisée LLVM avec la définition toolchain CMake suivante (vous ne devriez pas chroot dans votre système de fichiers racine à ce stade!):


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

(utiliser cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/the/file/above.txt)

S'il vous plaît noter que la cible devrait être armv6-linux-gnueabihf, et non armv6-linux-gnueabi.

+0

Super merci - je vais essayer! –

+0

Le lien va maintenant à une page de spam MacKeeper. – mtnygard

+0

@mtnygard, wow, la pire sorte de pourriture de lien que j'ai jamais vu –

Questions connexes