😎
BoringSSL と HTTP/3 対応の curl をビルドする
BoringSSL は Google が開発する TLS ライブラリである。Rust で書かれた HTTP/3 ライブラリの quiche と一緒にビルドする。BoringSSL と nghttp2 を実験的にビルドする場合、現時点で特定のコミットのみのサポートとなっている。環境は Chromebook の Linux 開発環境の Debian 12 Bookworm である。
まず Rust の導入は asdf で行った。
asdf plugin add rust
asdf install rust 1.77.2
asdf global rust 1.77.2
$HOME/http3/boringssl
をホームディレクトリにした。quiche と BoringSSL のコードを入手する
cd http3/boringssl
git clone --depth 1 --recursive -b 0.20.0 \
https://github.com/cloudflare/quiche
cargo コマンドで BoringSSL および quiche をビルドする
cargo build --package quiche --release --features ffi,pkg-config-meta,qlog
QUICHE_BSSL_PATH
変数にあらかじめビルドした BoringSSL のディレクトリを指定する方法があるが、Debian ではうまくいかなかった。
あとで cURL でビルドしやすいようにライブラリのリンクを生成する。
mkdir quiche/deps/boringssl/src/lib
ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) \
quiche/deps/boringssl/src/lib/
cd ../
次に curl をビルドする
git clone --depth 1 -b curl-8_7_1 https://github.com/curl/curl
cd curl
autoreconf -fi
./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" \
--with-openssl=$PWD/../quiche/quiche/deps/boringssl/src \
--with-quiche=$PWD/../quiche/target/release
make
make install
cd ../
quiche が組み込まれていることを確認する
bin/curl --version
Discussion