読者です 読者をやめる 読者になる 読者になる

Swift Package Manager のPackageがlinkerエラーでビルド失敗する

tech Swift

久しぶりにSwift Package Managerを触ったら、 この構成で、

$ ls
Package.swift   main.swift
$ cat main.swift 
print("hello")
$ cat Package.swift 
import PackageDescription

let package = Package(
    name: "Queue",
    dependencies: []
)

こんなエラーが出るようになりました。

$ swift build
Undefined symbols for architecture x86_64:
  "__TFSSCfT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS", referenced from:
      _main in main.swift.o
  "__TFs5printFTGSaP__9separatorSS10terminatorSS_T_", referenced from:
      _main in main.swift.o
  "__TIFs5printFTGSaP__9separatorSS10terminatorSS_T_A0_", referenced from:
      _main in main.swift.o
  "__TIFs5printFTGSaP__9separatorSS10terminatorSS_T_A1_", referenced from:
      _main in main.swift.o
  "__TMSS", referenced from:
      _main in main.swift.o
  "__TTSg5P____TFs27_allocateUninitializedArrayurFBwTGSax_Bp_", referenced from:
      _main in main.swift.o
  "__TZvOs7Process11_unsafeArgvGSpGSpVs4Int8__", referenced from:
      _main in main.swift.o
  "__TZvOs7Process5_argcVs5Int32", referenced from:
      _main in main.swift.o
  "_globalinit_33_1BDF70FFC18749BAB495A73B459ED2F0_func5", referenced from:
      _main in main.swift.o
  "_globalinit_33_1BDF70FFC18749BAB495A73B459ED2F0_token5", referenced from:
      _main in main.swift.o
ld: symbol(s) not found for architecture x86_64
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: build had 1 command failures
error: exit(1): ["/Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2016-01-11-a.xctoolchain/usr/bin/swift-build-tool", "-f", "/Users/toshi0383/dev/tmp/sample-package/.build/debug/Queue.o/llbuild.yaml"]

-v をつけてビルドしたらこういうコマンドがこけていたようなので、

/Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2016-01-11-a.xctoolchain/usr/bin/swiftc -o /Users/toshi0383/dev/tmp/sample-package/.build/debug/Queue /Users/toshi0383/dev/tmp/sample-package/.build/debug/Queue.o/main.swift.o -target x86_64-apple-macosx10.10 -Xlinker -all_load -g -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -L/usr/local/lib

いろいろ試しているうちに、最後の -L/usr/local/lib というのをなくしたらビルドが通りました。

$ /Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2016-01-11-a.xctoolchain/usr/bin/swiftc -o /Users/toshi0383/dev/tmp/sample-package/.build/debug/Queue /Users/toshi0383/dev/tmp/sample-package/.build/debug/Queue.o/main.swift.o -target x86_64-apple-macosx10.10 -Xlinker -all_load -g -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -L/usr/local/lib
$ .build/debug/Queue
hello

参考までに記事にしました。

前回触った時からしたことといえば、

  • Swiftをビルドした
  • Xcode7.3beta をインストールした

くらいなのですが。

原因不明なのですがひとまず。