博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
尝试在CentOS7.2上编译安装Swift
阅读量:4560 次
发布时间:2019-06-08

本文共 3869 字,大约阅读时间需要 12 分钟。

苹果提供 的教程,通过这个教程我尝试使用CentOS7.2上玩儿一把。目前已经成功在CentOS7.2上班成功安装 swift 4.0

swift --versionSwift version 4.0-devTarget: x86_64-unknown-linux-gnu

安装依赖

yum install -y git clang gcc-c++ uuid-devel libicu-devel icu libedit-devel libxml2-devel sqlite-devel swig python-devel ncurses-libs ncurses-devel pkgconfig libuuid-devel epel-release libbsd-devel

更新CMake

CMake 3.4.3 版本有要求,必须比 CMake 3.4.3 高。

# 下载wget https://cmake.org/files/v3.9/cmake-3.9.0.tar.gz# 解压tar -zxvf cmake-3.9.0.tar.gzcd cmake-3.9.0./bootstrap --prefix=/usrmakesudo make install

下载Swift的源代码

打开 找到 Cloned Repositories 创建 mkdir -p /usr/local/swift && cd /usr/local/swift 目录并进入swift

# 下载 swift-llvmwget https://github.com/apple/swift-llvm/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P llvmtar -zxvf swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -C src/llvm# 下载 swift-clangwget https://github.com/apple/swift-clang/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P clang# 下载 swift-lldbwget https://github.com/apple/swift-lldb/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P lldb# 下载 swift-cmarkwget https://github.com/apple/swift-cmark/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P cmark# 下载 swiftwget https://github.com/apple/swift/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P swift# 下载 ninjawget https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz -P ninja

上面采用 开发板编译花了三个小时,后面用 released 版本编译,警告少了许多,而且编译快了相当多呢,所以你需要选择一个稳定的 released 版本安装。

wget https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz -P ninjawget https://github.com/apple/swift/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz  -P swiftwget https://github.com/apple/swift-cmark/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz  -P cmarkwget https://github.com/apple/swift-lldb/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P lldbwget https://github.com/apple/swift-clang/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P clangwget https://github.com/apple/swift-llvm/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P llvmwget https://github.com/apple/swift-corelibs-libdispatch/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-30-a.tar.gz -P swift-corelibs-libdispatch

安装之后的目录结构

swift/└── src    ├── clang    ├── cmark    ├── lldb    ├── llvm    ├── ninja    ├── swift-corelibs-libdispatch     └── swift

编译安装ninja

yum install re2c -y # re2c 是一个用于编写快速灵活的词法分析器的工具

编译

./configure.py --bootstrapcp ninja /usr/local/bin/

编译Swift编译器

在文件 vi /etc/profile 添加下面代码,添加完成之后,source /etc/profile 更改立即生效。

export SWIFT_SOURCE_ROOT=/usr/local/swift/src

进入cd /usr/local/swift/src/swift/utils/ 目录,运行脚本

# ./build-script -R# 上面命令会报错,建议使用下面命令# https://github.com/apple/swift/pull/3594#issuecomment-234169759./build-script --libdispatch./build-script --libdispatch --extra-cmake-options="-DSWIFT_BUILD_SOURCEKIT:BOOL=TRUE"

swap区不够大的原因。导致clang++ kernel opps

clang: error: unable to execute command: Killedclang: error: linker command failed due to signal (use -v to see invocation)

请加大分区:

sudo fallocate -l 4G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile

开机自动挂载swap:

使用 vi 或 nano 在 /etc/fstab 文件底部添加如下内容:

/swapfile none swap sw 0 0

libatomic不存在

# 错误/usr/bin/ld: cannot find /usr/lib64/libatomic.so.1.0.0

解决办法,。

# 下载# 这里https://pkgs.org/download/libatomic找对应的rpm下载地址wget --no-check-certificate -O /etc/yum.repos.d/libatomic-4.8.5-11.el7.x86_64.rpm ftp://ftp.pbone.net/mirror/ftp.centos.org/7.3.1611/os/x86_64/Packages/libatomic-4.8.5-11.el7.x86_64.rpm# 安装rpm -ivh libatomic-4.8.5-11.el7.x86_64.rpm

编译完成,设置环境信息 vi ~/.bash_profile

PATH=$PATH:/usr/local/swift/src/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin

立即生效source ~/.bash_profile

HellWorld

添加 touch ~/HelloWorld.swift 文件,添加下面代码测试

print("Hello world!")

编译 swift 文件

swiftc ~/HelloWorld.swift -o ~/Hello

运行 ~/Hello 输出 Hello world!

大功告成!

Web框架

转载于:https://www.cnblogs.com/wcjiang/p/7308104.html

你可能感兴趣的文章
深入理解计算机系统(1.4)---并发与并行、浅谈抽象
查看>>
函数依赖的公理化系统
查看>>
rabbitmq学习(四):利用rabbitmq实现远程rpc调用
查看>>
侯捷C++学习(二)
查看>>
EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug
查看>>
web项目中全局常量的添加
查看>>
搬运工程 启动!
查看>>
局部加权回归(LWR) Matlab模板
查看>>
Connect to the DSP on C6A8168/DM8168/DM8148 using CCS
查看>>
hibernate在使用getCurrentSession时提示no session found for current thread
查看>>
【Luogu1471】方差(线段树)
查看>>
DEV中svg图标的使用
查看>>
Codefroces Gym101572 I.Import Spaghetti-有向图跑最小环输出路径(Floyd)
查看>>
有关位运算的操作+二进制状态压缩
查看>>
Eclipse插件 -- 阿里巴巴扫描编码规插件
查看>>
(1.1)学习笔记之mysql体系结构(内存、进程、线程)
查看>>
markdown测试
查看>>
Java-Maven-Runoob:Maven 依赖管理
查看>>
杂项-Log:log4net
查看>>
杂项-Java:EL表达式
查看>>