您的位置:首页 > 运维架构 > Linux

Linux 源码编译、安装swift和lldb

2017-02-18 15:42 549 查看

Linux 源码编译、安装swift和lldb

参考链接:

http://www.swiftprogrammer.info/swift_centos_1.html

http://www.th7.cn/Program/IOS/201603/772422.shtml

http://www.linuxidc.com/Linux/2016-01/127232.htm

http://os.51cto.com/art/201601/503260.htm

 

       这里是以Ubuntu16.04版本为例进行编译安装的。

目前官方已经Ubuntu14.04和16.04的Release版本。如果想直接使用Swift的发行版的话,在官网下载、解压即可得到可执行文件,设置环境变量即可使用。

       下面是一个在Ubuntu14.04下直接安装Release版swift的简单教程:

http://os.51cto.com/art/201601/503260.htm

 

        转载请注明出处: http://blog.csdn.net/zhang2010kang/article/details/55667798

        本文主要介绍的是如何在Linux上利用源码、编译安装Swift和lldb的方法。

⑴下载Swift源码

        由于项目代码文件夹比较多,为了管理方便,最好新建一个文件夹用来存所有下载的源代码。

mkdir swift
cd swift
git clone https://github.com/apple/swift.git[/code] 
        下载好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

        在http://www.swiftprogrammer.info/swift_centos_1.html中提到使用如下命令进行编译

utils/build-script -l -b -p --foundation -R

-l, --lldb

-b, --llbuild

-p, --swiftpm

 

       但我使用以上命令后出现了如下错误:

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的支持还不够完善造成的。

 

(7)只编译swift

./utils/build-script -S -R -t

        在编译期间如果出现库找不到的情况,请务必检查是否有依赖包少安装了。

        编译swift一定要查看各自README.md和官网的帮助手册。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  源码 linux swift lldb 编译