Linux 源码编译、安装swift和lldb

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.0416.04Release版本。如果想直接使用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


        下载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和官网的帮助手册。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值