Python3 のインストールでも分かるように、clang と llvm もこれからは必要そうです。
そこで、今使っている Raspberry Pi に llvm と clang をインストールしてみます。
最新のものは 19.1.0 でした。
先に、関連ありそうなパッケージを入れておきます。
# apt install cmake
# apt install ninja-buil
# apt install llvm llvm-dev
# apt install clang
$ /usr/bin/cmake --version
cmake version 3.25.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$
$ /usr/bin/clang --version
Debian clang version 14.0.6
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
$
ですね。
念のために、最初に cmake を最新にしておきます。
環境設定は例によって、python3.sh というファイル使います。
$ source ~/python3.sh
$ wget https://github.com/Kitware/CMake/releases/doload/v3.31.0/cmake-3.31.0.tar.gz
$ tar xvf cmake-3.31.0.tar.gz
$ cd cmake-3.31.0
$ ./configure --prefix=/usr/local/python
......
-- Configuring done (126.3s)
-- Generating done (2.9s)
-- Build files have been written to: /home/espiya/src/cmake/cmake-3.31.0
---------------------------------------------
CMake has bootstrapped. Now run gmake.
$
make でなくて gmake と言っていますが、
$ which gmake
/usr/bin/gmake
$ ls -l /usr/bin/gmake
lrwxrwxrwx 1 root root 4 Apr 10 2021 /usr/bin/gmake -> make
$
make コマンドです。 make して、インストールします。
$ gmake
# gmake install
確認します。
$ cmake --version
cmake version 3.31.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$
これで、cmake は最新になりました。
これを使って、llvm と clang をインストールしてみます。実は、Raspberry Pi でこれは非常に大変で、色々ためしてみたのですが、中々うまくいかないので苦労しました。最終的には、
https://clang.llvm.org/get_started.html
を参考にしました。
$ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.0/llvm-project-19.1.0.src.tar.xz
$ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.0/llvm-project-19.1.0.src.tar.xz.sig
$
$ gpg --verify llvm-project-19.1.0.src.tar.xz.sig
gpg: assuming signed data in 'llvm-project-19.1.0.src.tar.xz'
gpg: Signature made Tue 17 Sep 2024 12:42:39 BST
gpg: using RSA key D574BD5D1D0E98895E3BF90044F2485E45D59042
gpg: Good signature from "Tobias Hieta '<tobias@hieta.se>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: D574 BD5D 1D0E 9889 5E3B F900 44F2 485E 45D5 9042
$
$ tar xvf llvm-project-19.1.0.src.tar.xz
$
$ cd llvm-project-19.1.0.src
$ mkdir build-proj
$ cd build-proj
$ cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/python -G "Unix Makefiles" ../llvm
...........
-- Configuring done (52.2s)
-- Generating done (27.7s)
-- Build files have been written to: /home/espiya/src/llvm-project-19.1.0.src/build-proj
$
$ make
.............
[100%] Linking CXX static library ../../../lib/libbenchmark.a
[100%] Built target benchmark
[100%] Building CXX object third-party/benchmark/src/CMakeFiles/benchmark_main.ir/benchmark_main.cc.o
[100%] Linking CXX static library ../../../lib/libbenchmark_main.a
[100%] Built target benchmark_main
[100%] Copying llvm-locstats into /home/espiya/src/llvm-project-19.1.0.src/buil-proj/./bin
[100%] Built target llvm-locstats
$
このマシンでは、1日以上かかりました。 〇〇% と表示されるので一応目安になります。テストもできます。
$ make check-clang
...........
[100%] Running the Clang regression tests
llvm-lit: /home/espiya/src/llvm-project-19.1.0.src/llvm/utils/lit/lit/llvm/config.py:508: note: using clang: /home/espiya/src/llvm-project-19.1.0.src/build-proj/bin/clang
Testing Time: 3883.81s
Total Discovered Tests: 37989
Skipped : 10 (0.03%)
Unsupported : 150 (0.39%)
Passed : 37802 (99.51%)
Expectedly Failed: 27 (0.07%)
[100%] Built target check-clang
$
こちらも 1時間以上かかりました。
/usr/local/python へのインストール方法は書いていないのですが、普通に make で良さそうです。
# make install
......
-- Up-to-date: /usr/local/python/include/llvm/CodeGen
-- Installing: /usr/local/python/include/llvm/CodeGen/GenVT.inc
-- Up-to-date: /usr/local/python/include/llvm/TargetParser
-- Installing: /usr/local/python/include/llvm/TargetParser/ARMTargetParserDef.inc
-- Installing: /usr/local/python/include/llvm/TargetParser/AArch64TargetParserDef.inc
-- Installing: /usr/local/python/include/llvm/TargetParser/RISCVTargetParserDef.inc
-- Installing: /usr/local/python/lib/cmake/llvm/LLVMConfigExtensions.cmake
#
$ clang --version
clang version 19.1.0
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/python/bin
$
これで、clang 19.1.0 が使えるようになりました。時間はかかりましたが、Raspberry Pi でもビルドできたのが良かったです。
そこで、今使っている Raspberry Pi に llvm と clang をインストールしてみます。
最新のものは 19.1.0 でした。
先に、関連ありそうなパッケージを入れておきます。
# apt install cmake
# apt install ninja-buil
# apt install llvm llvm-dev
# apt install clang
$ /usr/bin/cmake --version
cmake version 3.25.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$
$ /usr/bin/clang --version
Debian clang version 14.0.6
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
$
ですね。
念のために、最初に cmake を最新にしておきます。
環境設定は例によって、python3.sh というファイル使います。
$ source ~/python3.sh
$ wget https://github.com/Kitware/CMake/releases/doload/v3.31.0/cmake-3.31.0.tar.gz
$ tar xvf cmake-3.31.0.tar.gz
$ cd cmake-3.31.0
$ ./configure --prefix=/usr/local/python
......
-- Configuring done (126.3s)
-- Generating done (2.9s)
-- Build files have been written to: /home/espiya/src/cmake/cmake-3.31.0
---------------------------------------------
CMake has bootstrapped. Now run gmake.
$
make でなくて gmake と言っていますが、
$ which gmake
/usr/bin/gmake
$ ls -l /usr/bin/gmake
lrwxrwxrwx 1 root root 4 Apr 10 2021 /usr/bin/gmake -> make
$
make コマンドです。 make して、インストールします。
$ gmake
# gmake install
確認します。
$ cmake --version
cmake version 3.31.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$
これで、cmake は最新になりました。
これを使って、llvm と clang をインストールしてみます。実は、Raspberry Pi でこれは非常に大変で、色々ためしてみたのですが、中々うまくいかないので苦労しました。最終的には、
https://clang.llvm.org/get_started.html
を参考にしました。
$ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.0/llvm-project-19.1.0.src.tar.xz
$ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.0/llvm-project-19.1.0.src.tar.xz.sig
$
$ gpg --verify llvm-project-19.1.0.src.tar.xz.sig
gpg: assuming signed data in 'llvm-project-19.1.0.src.tar.xz'
gpg: Signature made Tue 17 Sep 2024 12:42:39 BST
gpg: using RSA key D574BD5D1D0E98895E3BF90044F2485E45D59042
gpg: Good signature from "Tobias Hieta '<tobias@hieta.se>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: D574 BD5D 1D0E 9889 5E3B F900 44F2 485E 45D5 9042
$
$ tar xvf llvm-project-19.1.0.src.tar.xz
$
$ cd llvm-project-19.1.0.src
$ mkdir build-proj
$ cd build-proj
$ cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/python -G "Unix Makefiles" ../llvm
...........
-- Configuring done (52.2s)
-- Generating done (27.7s)
-- Build files have been written to: /home/espiya/src/llvm-project-19.1.0.src/build-proj
$
$ make
.............
[100%] Linking CXX static library ../../../lib/libbenchmark.a
[100%] Built target benchmark
[100%] Building CXX object third-party/benchmark/src/CMakeFiles/benchmark_main.ir/benchmark_main.cc.o
[100%] Linking CXX static library ../../../lib/libbenchmark_main.a
[100%] Built target benchmark_main
[100%] Copying llvm-locstats into /home/espiya/src/llvm-project-19.1.0.src/buil-proj/./bin
[100%] Built target llvm-locstats
$
このマシンでは、1日以上かかりました。 〇〇% と表示されるので一応目安になります。テストもできます。
$ make check-clang
...........
[100%] Running the Clang regression tests
llvm-lit: /home/espiya/src/llvm-project-19.1.0.src/llvm/utils/lit/lit/llvm/config.py:508: note: using clang: /home/espiya/src/llvm-project-19.1.0.src/build-proj/bin/clang
Testing Time: 3883.81s
Total Discovered Tests: 37989
Skipped : 10 (0.03%)
Unsupported : 150 (0.39%)
Passed : 37802 (99.51%)
Expectedly Failed: 27 (0.07%)
[100%] Built target check-clang
$
こちらも 1時間以上かかりました。
/usr/local/python へのインストール方法は書いていないのですが、普通に make で良さそうです。
# make install
......
-- Up-to-date: /usr/local/python/include/llvm/CodeGen
-- Installing: /usr/local/python/include/llvm/CodeGen/GenVT.inc
-- Up-to-date: /usr/local/python/include/llvm/TargetParser
-- Installing: /usr/local/python/include/llvm/TargetParser/ARMTargetParserDef.inc
-- Installing: /usr/local/python/include/llvm/TargetParser/AArch64TargetParserDef.inc
-- Installing: /usr/local/python/include/llvm/TargetParser/RISCVTargetParserDef.inc
-- Installing: /usr/local/python/lib/cmake/llvm/LLVMConfigExtensions.cmake
#
$ clang --version
clang version 19.1.0
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/python/bin
$
これで、clang 19.1.0 が使えるようになりました。時間はかかりましたが、Raspberry Pi でもビルドできたのが良かったです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます