5

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

作るのにかなりの時間がかかると聞いたことがあります。現在、数時間実行されていますが、実行できることを嬉しく思います。

これは長期的なビルド プロジェクトなので、必要に応じてビルドをやり直すことに何の不安もありません :)

4

1 に答える 1

8

Raspbian 用に LLVM をクロスコンパイルすることをお勧めします。それを Pi 自体で構築するには、かなりの時間がかかります。

まず、動作する root fs を使用して取得しdebootstrapます (または、既存の Raspbian インストールを複製するか、ダウンロードしたイメージを展開します)。一部の絶対シンボリック リンクを相対シンボリック リンクに置き換える必要がある場合があります。ビルド エラーに注意してください。

clang が動作し、十分に最近インストールされていることを確認してください (ARM ターゲット サポートを使用してビルドすることを忘れないでください)。

次に、次の CMake ツールチェーン定義を使用して 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-gnueabihftarget はではなくであることに注意してくださいarmv6-linux-gnueabi

于 2013-03-11T23:18:24.130 に答える