2013-03-11 41 views
5

Tôi đang tìm kiếm giải thích về những gì các tùy chọn xây dựng tốt nhất là dành cho LLVM 3.2 trên RaspbianLLVM xây dựng các tùy chọn cho ARM/Raspberry Pi

Tôi đã lấy nguồn LLVM 3,2, và cấu hình của tôi là:

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 

Tôi đã nghe phải mất khá nhiều giờ để xây dựng. Nó đã được chạy một vài giờ bây giờ, vui mừng chỉ để cho nó chạy mặc dù.

Đó là một dự án xây dựng lâu dài vì vậy tôi không phải e ngại làm lại việc xây dựng nếu cần :)

Trả lời

8

tôi khuyên bạn nên cross-biên soạn LLVM cho Raspbian. Xây dựng nó trên Pi chính nó mất lứa tuổi.

Trước tiên, hãy lấy fs gốc hoạt động bằng cách sử dụng debootstrap (cách khác, chỉ sao chép bản cài đặt Raspbian hiện có của bạn hoặc giải nén hình ảnh đã tải xuống). Bạn có thể cần phải thay thế một số liên kết tuyệt đối với người thân, xem ra các lỗi xây dựng.

Hãy chắc chắn rằng bạn đã cài đặt đủ công việc và đủ gần đây của clang (đừng quên xây dựng nó với hỗ trợ mục tiêu ARM).

Sau đó, cross-biên dịch LLVM với định nghĩa toolchain CMake sau (bạn không nên chroot vào fs gốc của bạn trong giai đoạn này!):


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

(sử dụng cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/the/file/above.txt)

Xin lưu ý mục tiêu mà phải là armv6-linux-gnueabihf, không phải armv6-linux-gnueabi.

+0

Rất cảm ơn - Tôi sẽ thử! –

+0

Liên kết hiện chuyển đến trang spam của MacKeeper. – mtnygard

+0

@mtnygard, wow, loại tồi tệ nhất của mối liên kết mà tôi từng thấy –

Các vấn đề liên quan