2013-03-11 7 views
5

मैं क्या सबसे अच्छा निर्माण विकल्पों RaspbianLLVM एआरएम के लिए विकल्प का निर्माण/रास्पबेरी पाई

पर LLVM 3.2 के लिए कर रहे हैं के स्पष्टीकरण की मांग कर रहा हूँ मैं दिलवाया गया है 3.2 की LLVM स्रोत, और मेरे config है:

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 

मैंने सुना है कि इसे बनाने में काफी घंटे लगते हैं। यह अब कुछ घंटों चल रहा है, हालांकि इसे चलाने के लिए खुश हैं।

यह एक लंबी अवधि के निर्माण परियोजना है इसलिए मैं निर्माण redoing अगर जरूरत :)

उत्तर

8

मैं Raspbian के लिए पार संकलन LLVM की सलाह देते हैं के बारे में कोई हिचक नहीं है। पीआई पर इसे बनाने में उम्र लगती है।

सबसे पहले, debootstrap का उपयोग कर एक काम कर रहे रूट fs प्राप्त करें (वैकल्पिक रूप से, बस अपनी मौजूदा रास्पियन स्थापना क्लोन करें या डाउनलोड की गई छवि को अनपैक करें)। आपको कुछ पूर्ण सिम्लिंक को रिश्तेदार के साथ बदलने की आवश्यकता हो सकती है, बिल्ड त्रुटियों के लिए देखें।

सुनिश्चित करें कि आपके पास कामकाजी और क्लैंग की हाल ही में पर्याप्त स्थापना है (इसे एआरएम लक्ष्य समर्थन के साथ बनाना न भूलें)।

तब, निम्न CMake toolchain परिभाषा के साथ पार संकलन LLVM (आप इस स्तर पर अपने जड़ FS में chroot नहीं करना चाहिए!):


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

लिंक अब मैककीपर स्पैम पेज पर जाता है। – mtnygard

+0

@mtnygard, वाह, मैंने कभी देखा है कि एक लिंक सड़कों का सबसे खराब प्रकार –