红联Linux门户
Linux帮助

Linux源码编译、安装swift和lldb

发布时间:2017-02-19 10:04:37来源:blog.csdn.net/zhang2010kang作者:zhang2010kang
这里是以Ubuntu16.04版本为例进行编译安装的。
目前官方已经Ubuntu14.04和16.04的Release版本。如果想直接使用Swift的发行版的话,在官网下载、解压即可得到可执行文件,设置环境变量即可使用。
本文主要介绍的是如何在Linux上利用源码、编译安装Swift和lldb的方法。
 
⑴.下载Swift源码
由于项目代码文件夹比较多,为了管理方便,最好新建一个文件夹用来存所有下载的源代码。
mkdir swift  
cd swift  
git clone https://github.com/apple/swift.git
下载好swift源码后,可以打开swift文件夹下的swift/README.md文件和swift/docs/Ubuntu14.md文件,其实在这两个文件中已经说明了该如何进行编译安装。
 
⑵.下载依赖项目源码
cd swift  
./utils/update-checkout --clone  
 
⑶.安装项目依赖
如果使用的是Ubuntu,可以使用如下命令安装所需要的项目依赖。以下命令是在swift/README.md中提供的命令。
sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config libblocksruntime-dev libcurl4-openssl-dev autoconf libtool systemtap-sdt-dev
经过我测试发现,其实有些软件在Ubuntu上已经安装如Python。如果不想全部安装的话,可以先安装少量的,如果报错在来安装其它的软件。据我所知,Git cmake ninja clang python是必须要安装的。
如果不想折腾的话,建议全部安装。
 
⑷.编译swift源码不带调试器lldb
编译使用的是utils/build-script脚本程序,在使用该脚本前,我强烈建议看下该脚本的使用帮助,我就是因为没有看帮助浪费了几天的时间。
./utils/build-script –help       #查看帮助信息  
utils/build-script默认使用的是带debug信息的编译方式,此种方法非常慢,并且所需的磁盘空间非常大。我花了好几个小时,20多G的磁盘全占满了,最后说磁盘不够用而报错终止了。所有在编译时务必加上-R选项,编译成Rlease版本。
utils/build-script -t -R
经过大约1小时后,只要最终的结果里没有 Unexpected Failures,那就说明本次编译成功了。
编译结束后,测试程序是否编译成功。如果出现如图所示结果,说明已经成功。
../build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift -v
Linux源码编译、安装swift和lldb
此种编译方式没编译lldb,所以无法对程序进行调试。
 
⑸.编译swift源码带调试器lldb
有提到使用如下命令进行编译
utils/build-script -l -b -p --xctest --foundation -R   
但我使用以上命令后出现了如下错误:
TestFoundation/TestNSString.swift:13:8: error: no such module 'XCTest'
import XCTest
^
ninja: build stopped: subcommand failed.
后来发现是XCode未进行编译,所有最终使用如下的命令编译通过。
utils/build-script -l -b -p --xctest --foundation -R
编译完成后,输入如下命令,检查lldb是否编译成功。
../build/Ninja-ReleaseAssert/lldb-linux-x86_64/bin/lldb –version
如果出现以下结果,则说明已经成功。
Linux源码编译、安装swift和lldb
 
⑹.Linux swift不支持REPL交换式命令行
Swift原则上是可以像python那样实现命令行的交换式输入的。但当我们输入
../build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift  
会出现如下的错误,说明不支持REPL
LLVM ERROR: Compiler-internal integrated REPL unimplemented for this platform; use the LLDB-enhanced REPL instead.
Linux源码编译、安装swift和lldb
该问题我目前正在研究。可能是因为编译器目前对linux的支持还不够完善造成的。
在编译期间如果出现库找不到的情况,请务必检查是否有依赖包少安装了。
编译swift一定要查看各自README.md和官网的帮助手册。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/28531.html