【问题标题】:LLVM build options for ARM / RaspberryPiARM / RaspberryPi 的 LLVM 构建选项
【发布时间】:2013-02-26 03:06:09
【问题描述】:

我正在寻求澄清 Raspbian 上 LLVM 3.2 的最佳构建选项是什么

我已经获取了 3.2 的 LLVM 源,我的配置是:

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

我听说构建需要好几个小时。它现在已经运行了几个小时,但很高兴让它运行。

这是一个长期的构建项目,所以如果需要,我对重做构建没有任何疑虑:)

【问题讨论】:

    标签: llvm raspberry-pi raspbian


    【解决方案1】:

    我建议为 Raspbian 交叉编译 LLVM。在 Pi 上构建它需要很长时间。

    首先,使用debootstrap 获取一个可用的root fs(或者,只需克隆您现有的Raspbian 安装或解压缩下载的图像)。您可能需要用相对替换一些绝对符号链接,注意构建错误。

    确保您有一个可以工作且足够新的 clang 安装(不要忘记使用 ARM 目标支持构建它)。

    然后,使用以下 CMake 工具链定义交叉编译 LLVM(在此阶段您不应该 chroot 进入您的根 fs!):

    
    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

    【讨论】:

    • 该链接现在转到 MacKeeper 垃圾邮件页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多