🕌
C23 とC++23 をサポートする LLVM 18 を Debian 12 Bookworm にインストール
【追記】2024年6月7日にリリースされた Zig 0.13 は LLVM 18 に対応しています
C23 と C++23 がサポートされた LLVM 18 を Debian 12 Bookworm にインストールした。
まずリポジトリの公開鍵を導入する
# https://apt.llvm.org/
curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
次にリポジトリの URL を登録する
sudo nano /etc/apt/sources.list.d/llvm.list
llvm.list
deb [signed-by=/etc/apt/trusted.gpg.d/apt.llvm.org.asc] http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-18 main
アップデートする
sudo apt update
sudo apt upgrade
Clang 18 を導入する
sudo apt install clang-18 lldb-18 lld-18
バージョンを確認する
clang-18 --version
Debian clang version 18.1.4 (++20240417123804+e6c3289804a6-1~exp1~20240417003947.102)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
デフォルトの clang
コマンドのバージョンを切り替えることができる
# https://gist.github.com/junkdog/70231d6953592cd6f27def59fe19e50d
# https://qiita.com/yoshiyasu1111/items/3815af53a25b3b1df0f4
sudo update-alternatives \
--install /usr/bin/clang clang /usr/bin/clang-18 1 \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-18 \
--slave /usr/bin/lldb lldb /usr/bin/lldb-18 \
--slave /usr/bin/lld lld /usr/bin/lld-18
c23 でサポートされた char8_t
を試してみる
test.c
#include <uchar.h>
#include <stdio.h>
// https://en.cppreference.com/w/c/string/multibyte/char8_t
int main(void){
char8_t str[] = "Hello World";
printf("%s\n", str);
return 0;
}
ビルド時に -std=c23
オプションを指定する
clang -std=c23 test.c -o test
zig cc -std=c23 -lc test.c -o test
C++23 でサポートされた std::print
も試してみた。
test.cc
#include <print>
int main()
{
std::print("{}\n", "Hello World");
}
clang++ 18.1.4 ではエラーになってしまったが、zig c++ (clang++ 17.0.6) では正常にコンパイルできた
clang++ -std=c++23 test.cc -o test
zig c++ -std=c++23 test.cc -o test
LLVM 19 では std::println
が実装される予定である
C++20 で導入された std::format
も試してみる
#include <iostream>
#include <format>
int main()
{
using namespace std;
cout << format("{}\n", "Hello World") << endl;
}
コンパイルオプションは次のとおり
clang++ -std=c++20 test.cc -o test
zig c++ -std=c++20 test.cc -o test
Discussion