Linux源码编译、安装swift和lldb

作者: zhang2010kang 2017-02-19 10:04:37

这里是以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




此种编译方式没编译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不支持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一定要查看各自README.md和官网的帮助手册。


 


本文永久更新地址:http://www.linuxdiyf.com/linux/28531.html

相关资讯