Swift エコシステムは Apple プラットフォームの外で積極的に開発されており、現在では Windows Subsystem for Linux (WSL2) を使用して Windows 上で Swift エコシステムに書き込むのが非常に快適です。 Linux/WSL でのアセンブリの場合、独自の Apple フレームワーク (SwiftUI、UIKit、AppKit、CoreData、CoreML、ARKit、SpriteKit、その他の iOS/macOS 固有のライブラリなど) なしで、Swift の軽量バージョンが利用可能であることを考慮する価値がありますが、コンソール ユーティリティとバックエンドの場合はこれで十分です。この投稿では、環境を準備し、WSL2 内のソース コードから Swift コンパイラーを構築するプロセスを段階的に説明します (例として Ubuntu/Debian を使用)。
パッケージのリストとシステム自体を更新します。
sudo apt update && sudo apt upgrade -y
ビルドに必要な依存関係をインストールします。
sudo apt install -y \
git cmake ninja-build clang python3 python3-pip \
libicu-dev libxml2-dev libcurl4-openssl-dev \
libedit-dev libsqlite3-dev swig libncurses5-dev \
pkg-config tzdata rsync
コンパイラとリンカー (LLVM と LLD) をインストールします。
sudo apt install -y llvm lld
すべての依存関係を含む Swift リポジトリのクローンを作成します。
git clone https://github.com/apple/swift.git
cd swift
utils/update-checkout --clone
`swiftly` と既製の swift を swiftc でインストールする
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz && \
tar zxf swiftly-$(uname -m).tar.gz && \
./swiftly init --quiet-shell-followup && \
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh" && \
hash -r
ビルドを開始しましょう (これには長い時間がかかります)。
utils/build-script \
--release-debuginfo \
--swift-darwin-supported-archs="x86_64" \
--llvm-targets-to-build="X86" \
--skip-build-benchmarks \
--skip-test-cmark \
--skip-test-swift \
--skip-ios \
--skip-tvos \
--skip-watchos \
--skip-build-libdispatch=false \
--skip-build-cmark=false \
--skip-build-foundation \
--skip-build-lldb \
--skip-build-xctest \
--skip-test-swift
ビルドが完了したら、コンパイラーへのパスを PATH に追加します (ビルド フォルダーへのパスを指定します)。
export PATH=/root/Sources/3rdparty/build/Ninja-RelWithDebInfoAssert/swift-linux-x86_64/bin/swiftc:$PATH
インストールされている Swift のバージョンが動作していることを確認します。
swift --version
テスト ファイルを作成して実行します。
echo "print(\"Hello, World!\")" > hello.swift
swift hello.swift
バイナリをコンパイルして実行することもできます。
swiftc hello.swift
./hello