Open3
swift 5.10.1をビルドする
$ cd swift
$ utils/update-checkout --tag swift-5.10.1-RELEASE
utils/update-checkout
でicuでこけたら、次のようにリポジトリをcloneしておく
git clone https://github.com/unicode-org/icu
ビルドしたswiftでコンパイルする
$ ~/src/swift-project/build/Ninja-RelWithDebInfoAssert/swift-macosx-arm64/bin/swiftc main.swift -L /Applications/Xcode-15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/
$ ./main
hello
main.swiftは次の内容
print("hello")
-L
を付けないとエラー終了する
$ ~/src/swift-project/build/Ninja-RelWithDebInfoAssert/swift-macosx-arm64/bin/swiftc main.swift
error: link command failed with exit code 1 (use -v to see invocation)
ld: library 'System' not found
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: fatalError
もちろん環境変数を変更しても良い
$ export LIBRARY_PATH="$LIBRARY_PATH:/Applications/Xcode-15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/"
$ ~/src/swift-project/build/Ninja-RelWithDebInfoAssert/swift-macosx-arm64/bin/swiftc main.swift
$ ./main
hello
Xcodeでオブジェクトファイルを生成する
-emit-object
を指定して、Xcodeで実行するとmain.o
が生成される。
$ ls
main.o main.swift
$ gcc main.o
$ ./a.out
hello