【问题标题】:Swift 2.2 undefined symbols preventing buildSwift 2.2 未定义符号阻止构建
【发布时间】:2015-12-08 17:51:09
【问题描述】:

我正在尝试使用新版本的开源 Swift 2.2 编译器构建一个项目,但遇到了一些问题。

像这样的最小示例:

.
├── Package.swift
└── Sources
    └── main.swift

Package.swift

import PackageDescription

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

main.swift

print("foo")

通过swift build 运行会抛出以下内容:

Compiling Swift Module 'foo' (1 sources)
Linking Executable:  .build/debug/foo
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: build had 1 command failures
swift-build: exit(1): ["/Library/Developer/Toolchains/swift-2.2-SNAPSHOT-2015-12-01-a.xctoolchain/usr/bin/swift-build-tool", "-f", "/Users/kilian/Desktop/foo/.build/debug/foo.o/llbuild.yaml"]

Swift 是 Apple Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c) Target: x86_64-apple-macosx10.9,如 swift.org 上提供的那样。

我可以在网上找到的唯一故障排除信息对应于 Xcode 和链接其他外部库。在这里的任何帮助将不胜感激。

【问题讨论】:

  • FWIW,你的确切例子对我有用。一个简单的swift 是否会为您正确启动 2.2-dev REPL? print("hello") 是否在 REPL 中工作?
  • 确实如此,在 REPL 中似乎一切正常。

标签: swift swift2


【解决方案1】:

我还没有在我的 Mac 上尝试过新的开源 Swift,而是专注于在 Linux 上使用它。但是,在 Linux 上可能发生这种情况的一种方式是当 Clang 不可用时。在这种情况下, swift REPL 和 swift 作为解释器可以正常工作,但是 swiftc 和 swift build 失败。出于好奇,您可能想尝试一下

swiftc main.swift

在您的Sources 目录中。谷歌搜索xcode command line tools mac os x 或这些搜索词的组合。例如,以下内容可能会有所帮助:

https://developer.apple.com/library/ios/technotes/tn2339/_index.html

要查看您的命令工具是否可用,请从命令行尝试clanggcc。如果您收到没有输入文件的消息,则说明工具已安装(可能不正确)。如果您遇到其他错误,则说明工具不存在,这很可能是您的问题的原因。

希望这会有所帮助。

【讨论】:

  • 有趣的是swiftc 也可以毫无问题地编译代码。似乎只有swift build 遇到了这个问题。 clang 和 gcc 也可用(虽然我相信 gcc 默认只是 clang 的别名)。
猜你喜欢
  • 1970-01-01
  • 2014-11-07
  • 2021-03-12
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多