【发布时间】:2015-12-03 23:00:40
【问题描述】:
我对 swift 完全陌生。它刚刚作为 linux 的开源版本发布,我想尝试一下。这是在 ubuntu 14.04 上。 clang 是根据先决条件安装的。
<Edit>: requirements here 在 ubuntu 14.04 上请求 clang 版本 3.6。我首先使用 clang 3.4 尝试了这些第一步,但后来按照链接中的说明更新到 3.6 并重试。结果相同。</Edit>
我已将https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz 下载到 ~/Downloads/。安装脚本和swift中的第一步:
$ cd /tmp
$ tar xf ~/Downloads/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz
$ PATH=/tmp/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin/:"$PATH"
$ clang++ --version
Ubuntu clang version 3.6.0-2ubuntu1~trusty1 (tags/RELEASE_360/final) (based on LLVM 3.6.0)
Target: x86_64-pc-linux-gnu
Thread model: posix
$ which swift
/tmp/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin//swift
$ swift --version
Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c)
Target: x86_64-unknown-linux-gnu
$ swift
Welcome to Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c). Type :help for assistance.
1> 1 + 2
opening import file for module 'SwiftShims': No such file or directory
1>
根据this getting started guide 应该打印出来
$R0: Int = 3
出了什么问题,我该如何解决?
编辑:尝试手动查找该文件:它显然不包含在安装中:
$ find swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/ | grep -i shims
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/FoundationShims.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/SwiftStddef.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/module.map
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/UnicodeShims.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/GlobalObjects.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/HeapObject.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/RuntimeShims.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/RefCount.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/RuntimeStubs.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/LibcShims.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/CoreFoundationShims.h
swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/shims/SwiftStdint.h
编辑:当我尝试swift build helloworld example 时,会产生以下输出:
/tmp/Hello$ swift build
<unknown>:0: error: opening import file for module 'Swift': No such file or directory
swift-build: exit(1): ["/tmp/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin/swiftc", "--driver-mode=swift", "-I", "/tmp/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/pm", "-L", "/tmp/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/lib/swift/pm", "-lPackageDescription", "/tmp/Hello/Package.swift"]
编辑:截至 2015 年 12 月 22 日的新发现
自从我发布这个问题以来,至少还有两个 swift for linux 的快照已经发布:2015-12-10 和 2015-12-18。我已经尝试过这些,但它们不能解决问题。
这里的邮件列表线程(post 1、post 2、post 3)也存在同样的问题。有人建议在主目录下安装 swift 会有所帮助。在我的情况下它没有帮助,错误消息仍然是一样的。
更有趣的是,该邮件列表线程包含an analysis of the REPL error created with strace。将特定的 strace 输出与 REPL 工作的系统的 strace 输出进行比较会很有趣。
编辑:截至 2015 年 12 月 26 日的更多信息:
2015 年 12 月 22 日发布了一个新的 swift 版本。此版本也存在同样的问题。
另一个关于这个问题的帖子已经出现在 swift 邮件列表starting here 上。遇到问题的用户也发布了strace output here。
【问题讨论】:
-
@shellter 这是关于让编程环境工作的。当然,这样的问题涉及两个主题,具体的编程环境以及安装它的系统。然而,我的感觉是,懂 Swift 编程的人比懂 Unix 的人更有可能解决这个问题。
-
是的,防守得很好,也许我有点太仓促了。我撤回了我的近距离投票。祝你好运!
-
假设您熟悉
git,实际上有更好的方法。如果您查看swift.org/source-code 中列出的每个 Github 存储库,您会看到有一个swift-2.2-branch。克隆swift.org中详述的所有存储库,然后切换到swift-2.2-branch。然后,您可以随时构建和更新。还有一个与下载匹配的标签,因此您可以构建到与swift.org下载匹配的特定版本。随着 2.2 版的临近发布,重大更改可能会越来越少。 -
@timbo 感谢您的贡献,但我不得不问:更好的方法来实现什么?我的兴趣是学习 swift,一种新的编程语言。我尝试安装 swift 作为第一步。按照执行安装的说明,我遇到了问题中描述的问题。有时我会尝试新的二进制版本以查看问题是否已解决。到目前为止还不是。从什么意义上说,从源代码构建是一种更好的方法?
-
当 Swift 接近 2.2 版本并查看内部结构时,这将是一种更好的方法来保持 Swift 的最新状态,但不可否认,这不是从头开始学习它的最佳方法。如果您只是想安装它,必须有人(或一群人)将 Ubuntu 软件包放在一起。一个 HomeBrew 包已经出现在 OS X 上。
标签: linux swift swift2 ubuntu-14.04