在Linux上安装swift 3

Swift官方下载网站提供了Ubuntu版本的Swift,可以直接下载安装。

Install Swift language on CentOS (Red Hat)介绍了Swift 3.0 Preview 6 for Ubuntu 14.04 也可以在CentOS x64 7.2上工作,只需要创建软连接

sudo ln -s /lib64/libedit.so.0 /lib64/libedit.so.2
sudo ln -s /usr/lib64/libicuuc.so /usr/lib64/libicuuc.so.52
sudo ln -s /usr/lib64/libicui18n.so /usr/lib64/libicui18n.so.52

在Ubuntu 16上安装Swift 3

  • 安装swfit之间需要先安装clang并配置:

sudo apt-get update
sudo apt-get install clang

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100

当前(2017.5)默认安装clang-3.8版本,可以通过apt-cache search clang搜索相关软件包信息。

注意不要忘记执行update-alternatives,否则会导致build软件包的时候出现error: invalid inferred toolchain报错。

update-alternatives 语法命令 --install <link> <name> <path> <priority>

wget https://swift.org/builds/swift-3.1.1-release/ubuntu1610/swift-3.1.1-RELEASE/swift-3.1.1-RELEASE-ubuntu16.10.tar.gz
tar xfz swift-3.1.1-RELEASE-ubuntu16.10.tar.gz
cd /opt
sudo mkdir swift
cd swift
sudo cp -R ~/swift-3.1.1-RELEASE-ubuntu16.10.tar.gz ./
sudo tar -zxvf swift-3.1.1-RELEASE-ubuntu16.10.tar.gz
sudo ln -s /opt/swift/swift-3.1.1-RELEASE-ubuntu16.10 /opt/swift/swift-current

以上安装,所有swift版本都安装在/opt/swift目录下,并且当前使用版本软连接为swift-current

  • 将swift加入PATH,即编辑~/.bash_profile添加

PATH=/opt/swift/swift-current/usr/bin:$PATH

注意:如果shell使用bash的话,不要将上述环境设置添加到~/.profile中,因为bash不读取这个环境配置(见配置前半部分注释)。

重新登录终端,或者执行. ~/.profile

执行以下命令验证安装是否成功

swift -version

swift初次使用

  • 执行swift报错

/opt/swift/swift-3.1.1-RELEASE-ubuntu16.10/usr/bin/lldb: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

参考 Incomplete install instructions for Ubuntu

sudo apt-get install libpython2.7

此外Incomplete install instructions for Ubuntu还建议安装sudo apt-get install libcurl3

  • 执行print("Hello, world!")报错

error: Couldn't IRGen expression, no additional error

这个错误在Mac OS X上默认安装并没有出现错误,但是在ubuntu linux 16.10上出现,是环境相关错误。

尝试将上述测试命令print("Hello, world!")写入到一个hello.swift文本中,然后执行swift hello.swift发现提示无法读取swift语言安装目录中文件:

<unknown>:0: error: cannot open file '/opt/swift/swift-3.1.1-RELEASE-ubuntu16.10/usr/lib/swift/CoreFoundation/module.modulemap': Permission denied

检查发现这个文件的权限是-rw-r----- 1 root root

原来程序包安装目录中有文件对于普通用户无法访问导致了上述问题。将swift程序包软件目录修改成普通用户属主:

cd /opt
chown -R hautai:huatai swift

然后再使用swift程序就没有问题了。

CentOS 7上源代码编译Swift 3

参考 Trying to Build Swift on CentOS 7.1 from Source,有可能可以从源代码编译。

参考

Last updated