• Swift 是学习iOS的基础,Apple 对其开源,使Linux用户也能去体验这个新语言。本文主要是讲述如何在Ubuntu 环境下部署Swift 的IDE ( CLion EAP)开发环境。 Keywords: Swift, Linux, CLion

    1、前言

          「转载请声明:http://blog.csdn.net/vic_357/article/details/50786676 」

            本人一直想学习iOS开发,苦于高成本的开发环境的准备(至少要一台Mac电脑,本人倾向于Macbook pro),一直在观望,听说这个月macbook pro会出新,而且可能会改模具,一直迟迟没敢下手, 好的,扯远了,我们现在回归正题。

    Swift 是学习iOS的基础,而且利益于上一年底Apple大发慈悲地对Swift开源了( https://swift.org/ ),开源了就有戏了。Linux用户也可以玩Swift,至少对学习这个语言的语法和特点是有不少帮助的。官网上有配套的Ubuntu的开发环境搭建教程。

            但是,在现在IDE大行其道的今天,一个好的IDE可以大大地提高开发效率,我本人是比较喜欢使用IDE的,Android Studio、Visual Studio、Eclipse等都是开发者的好朋友。(各路Vim、Emacs大神请无视)。CLion,是一个和Android Studio同源的IDE,最近有个swift的plugin,使它可以支持swift的开发和编译, 界面和操作基本类似,对于像我这样的Android app developer来说真是福音。

            本人OS环境:Ubuntu 14.04 64bit

            Reference传送门:

            Swift Linux 环境下的部署官方教程:https://swift.org/download ( 下载 Latest Development Snapshots,和对应的Signature )

            CLion & Swift plugin : https://confluence.jetbrains.com/display/CLION/Early+Access+Program  (下载 For Unix 版本和 Swift plugin )

    2、Swift Ubuntu环境下部署

            (英文能力好的同学可以直接参考官方的教程。)

            Step 1: 安装依赖


    $ sudo apt-get install clang libicu-dev

            Step 2: 导入PGP Keys

    $ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -

            Step 3: 验证PGP Signature

            使用下载好的Signature来进行验证。

            cd 到你下载的Signature目录,运行以下命令:

    $ gpg --verify swift-2.2-SNAPSHOT-2016-03-01-a-ubuntu14.04.tar.gz.sig

            输出Good Signature from .... 表示OK,如果输出以下结果,也没关系。

    gpg: WARNING: This key is not certified with a trusted signature!
    gpg:          There is no indication that the signature belongs to the owner.

            Step 4: 解压并安装Swift 

            将下载的tar.gz压缩包解压到特定目录,比如说/home/dev,最好改一个swift目录的名字,比如说swift-2.2,里会有一个usr目录。

            把swift加入到环境变量。

    $ sudo gedit ~/.bashrc 
            在末尾加入你的SWIFT_HOME变量

            export SWIFT_HOME=/home/victor/dev/swift-2.2

            export PATH=${SWIFT_HOME}/usr/bin:$PATH

            保存并退出。运行以下命令使之立即生效。

    $ source ~/.bashrc
            运行以下命令激活Signing Key.

    wget -q -O - https://swift.org/keys/automatic-signing-key-1.asc | gpg --import -
            运行以下命令导入Signing Key

    $ wget -q -O - https://swift.org/keys/release-key-swift-2.2.asc | gpg --import -
            运行以下 命令测试你的Swift是否正确安装。

    $ swift --version
            若输出:

            Swift version 3.0-dev (LLVM b361b0fc05, Clang 11493b0f62, Swift 24a0c3de75)
             Target: x86_64-unknown-linux-gnu

            证明成功安装。

            可以参考这里来尝鲜:https://swift.org/getting-started/


    3、CLion EAP 与 Swift plugin 安装

            下载好CLion 和 Swift plugin之后,解压CLion到一个目录

            cd 到CLion的 /bin 目录,运行以下命令启动软件。

    $ sh clion.sh
            进入到主界面后, File->Settings,选择Plugins,选择Install plugin from disk...,找到下载的Swift plugin.jar文件,按提示重启CLion。

            重新进入CLion后, File->Settings, 选择Build,Execution,Deployment, 选择Swift,设置SDK Home,勾选 Use Swift debugger.

            

            IDE和plugin 安装完成。

    4、来一发 "Hello, Swift!"

            Step 1: 创建Project 

            File->New Project...  起名为HelloSwift. 默认创建了一个C++的项目。

            

            删除main.cpp文件,右键项目名添加,New->Swift file, 起名为Package.swift;   同样再添加一个main.swift。

            编辑main.swift内容。

            

            打开,CMakeList.txt, 删除project 下面的内容,并添加编辑内容。(提示:输入add_swift 时会有提示并自动生成add_custom_target)

            

            更改CMakeList.txt时,IDE右上角会提示如下,选择Enable Auto-Reload可以实现自动加载。

            

            SOURCES 后面添加Package.swift  和  main.swift。

            

            

            Step 2: Build Project tools

            File->Settings... 选择Tools,选择External Tools, 添加swift-build命令。(更改Group名字 为Swift)


            同样的方法,添加 cmd-clena命令( 选择Group 为 Swift )


            完成后如下。

            

            准备工作完成,可以进行编译了。

            右键项目名,选择Swift->swift-build, 项目完成编译后,会生成.build目录,里有debug/HelloSwift 就是可运行文件。

            下面讲解如何优雅地通过Shift + F10 进行项目的快速运行。

            选择点击 Run按钮。会弹出配置对话框。

            Executable选择 ./build/debug/HelloSwift ( 通过在选择文件对话框中输入./build来找到隐藏文件 )

            

            下面的Before launch中,添加External tool , 注意调整他们的先后位置,要cmd-clean在首位。

            

            完成设置后,见证奇迹的时刻, Shift + F10 。

            

    展开全文
  • Ubuntu安装swift4

    2018-02-12 10:28:04
    安装clang编译器clang 编译器是苹果公司提供的 C 编译器,是 Swift 必需的...官网下载swift4减压后将路径添加到环境变量 sudo gedit /etc/environmentPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/

    安装clang编译器

    clang 编译器是苹果公司提供的 C 编译器,是 Swift 必需的一个组件

    sudo apt-get install clang libicu-dev
    

    官网下载swift4

    减压后将路径添加到环境变量

     sudo gedit /etc/environment
    
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/aven/local/swift-4.0.3/usr/bin"
    

    使环境变量立即执行

    source /etc/environment
    

    验证swift

    终端输入

    swift --version 
    

    返回

    Swift version 4.0.3 (swift-4.0.3-RELEASE)
    Target: x86_64-unknown-linux-gnu
    

    出现这个代表安装成功了.

    展开全文
  • clang 编译器是苹果公司提供的 C 编译器,是 Swift 必需的一个组件。在终端运行下面命令执行安装 sudo apt-get --assume-yes install clang 或者去 Ubuntu 软件中心搜索 Clang 安装即可 极客在安装Clang的时候...

    1. 安装 clang 编译器

    clang 编译器是苹果公司提供的 C 编译器,是 Swift 必需的一个组件。在终端运行下面命令执行安装

    sudo apt-get --assume-yes install clang

    或者去 Ubuntu 软件中心搜索 Clang 安装即可


    PS: Geek在安装Clang的时候出现过以下问题




    解决方法:

    打开Ubuntu 软件中心

    搜索Clang点击安装,出现一个报错,Ubuntu 软件中心报错,需要修复,点击修复,卸载旧版本Clang,从新安装即可


    2.取Swift 包

    去官网下载: https://swift.org/download

    或者: wget https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz

    推荐去官网选择适合自己的Ubuntu版本下载


    3.安装Swift

    ① 使用 tar 命令,解压下载完成的 Swift 包:

    tar xvzf swift-2.2.1-RELEASE-ubuntu14.04.tar.gz


    ② 将 Swift 的 bin 目录写入环境变量,这样系统就可以找到我们要执行的命令了:

    sudo vi /etc/environment
    将路径加入到环境变量之后
    :/home/setup/swift/usr/bin
    立即生效
    source /etc/environment

    但是发现还是不行,所以我就加到用户目录下
    vi ~/.bashrc
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/setup/swift/usr/bin"
    source ~/.bashrc


    ③ 命令行,输入 swift --version 命令验证 Swift 是否安装成功。

    如果安装成功,我们就可以收到类似这样的输出:



    4.测试

    vi 新建一个后缀为 .swift的文件
    写入代码 print("Hello Word!")
    :wq 保存

    swift有2种执行方法

    swift Hello.swift
    swiftc -o Hello Hello.swift

    运行结果且无报错说明成功

    PS: Geek在编译的时候打开一个新的终端,会出现命令无法使用需要重新执行 source  /home/setup/.profile ,不知道什么原因造成的,由于Geek时间匆忙就写了开机启动项了,有知道什么情况的可以说下,在此拜谢!!!




    参考文献:                                             

    手把手教你使用 Linux 平台上的 Swift

    Swift 编程语言(官方)                        



    展开全文
  • Swift的开发环境可以使用苹果平台(OS X)或Linux系统(Ubuntu),这里介绍在我在Ubuntu 14 server下安装Swift运行环境的过程1、安装所需的依赖项$ sudo apt-get install clang libicu-dev我是先安装的clang,中间会...

    Swift的开发环境可以使用苹果平台(OS X)或Linux系统(Ubuntu),这里介绍在我在Ubuntu 14 server下安装Swift运行环境的过程

    1、安装所需的依赖项

    $ sudo apt-get install clang libicu-dev

    我是先安装的clang,中间会提示需要下载多少M的文件,安装完成后会占用多少磁盘空间,是否继续?

    如下面加粗的部分所示,输入字母y,回车

    # sudo apt-get install clang
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following extra packages will be installed:
      binfmt-support clang-3.4 libclang-common-3.4-dev libclang1-3.4 libffi-dev
      libllvm3.4 libobjc-4.8-dev libobjc4 libtinfo-dev llvm-3.4 llvm-3.4-dev
      llvm-3.4-runtime
    Suggested packages:
      llvm-3.4-doc
    The following NEW packages will be installed:
      binfmt-support clang clang-3.4 libclang-common-3.4-dev libclang1-3.4
      libffi-dev libllvm3.4 libobjc-4.8-dev libobjc4 libtinfo-dev llvm-3.4
      llvm-3.4-dev llvm-3.4-runtime
    0 upgraded, 13 newly installed, 0 to remove and 10 not upgraded.
    Need to get 31.3 MB of archives.
    After this operation, 156 MB of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Get:1 http://hk.archive.ubuntu.com/ubuntu/ trusty/main libllvm3.4 amd64 1:3.4-1ubuntu3 [6,540 kB]
    Get:2 http://hk.archive.ubuntu.com/ubuntu/ trusty-updates/main libobjc4 amd64 4.8.4-2ubuntu1~14.04.1 [111 kB]
    Get:3 http://hk.archive.ubuntu.com/ubuntu/ trusty-updates/main libobjc-4.8-dev amd64 4.8.4-2ubuntu1~14.04.1 [378 kB]
    Get:4 http://hk.archive.ubuntu.com/ubuntu/ trusty/universe libclang1-3.4 amd64 1:3.4-1ubuntu3 [3,534 kB]
    Get:5 http://hk.archive.ubuntu.com/ubuntu/ trusty/main binfmt-support amd64 2.1.4-1 [49.0 kB]
    Get:6 http://hk.archive.ubuntu.com/ubuntu/ trusty/universe libclang-common-3.4-dev amd64 1:3.4-1ubuntu3 [667 kB]
    Get:7 http://hk.archive.ubuntu.com/ubuntu/ trusty/universe clang-3.4 amd64 1:3.4-1ubuntu3 [8,922 kB]
    Get:8 http://hk.archive.ubuntu.com/ubuntu/ trusty/universe clang amd64 1:3.4-0ubuntu1 [2,476 B]
    Get:9 http://hk.archive.ubuntu.com/ubuntu/ trusty/main libtinfo-dev amd64 5.9+20140118-1ubuntu1 [76.3 kB]
    Get:10 http://hk.archive.ubuntu.com/ubuntu/ trusty/main llvm-3.4-runtime amd64 1:3.4-1ubuntu3 [36.2 kB]
    Get:11 http://hk.archive.ubuntu.com/ubuntu/ trusty/main llvm-3.4 amd64 1:3.4-1ubuntu3 [1,078 kB]
    Get:12 http://hk.archive.ubuntu.com/ubuntu/ trusty-updates/main libffi-dev amd64 3.1~rc1+r3.0.13-12ubuntu0.1 [99.8 kB]
    Get:13 http://hk.archive.ubuntu.com/ubuntu/ trusty/main llvm-3.4-dev amd64 1:3.4-1ubuntu3 [9,801 kB]
    Fetched 31.3 MB in 1min 55s (272 kB/s)                                         
    Selecting previously unselected package libllvm3.4:amd64.
    (Reading database ... 78700 files and directories currently installed.)
    Preparing to unpack .../libllvm3.4_1%3a3.4-1ubuntu3_amd64.deb ...
    Unpacking libllvm3.4:amd64 (1:3.4-1ubuntu3) ...
    Selecting previously unselected package libobjc4:amd64.
    Preparing to unpack .../libobjc4_4.8.4-2ubuntu1~14.04.1_amd64.deb ...
    Unpacking libobjc4:amd64 (4.8.4-2ubuntu1~14.04.1) ...
    Selecting previously unselected package libobjc-4.8-dev:amd64.
    Preparing to unpack .../libobjc-4.8-dev_4.8.4-2ubuntu1~14.04.1_amd64.deb ...
    Unpacking libobjc-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.1) ...
    Selecting previously unselected package libclang1-3.4:amd64.
    Preparing to unpack .../libclang1-3.4_1%3a3.4-1ubuntu3_amd64.deb ...
    Unpacking libclang1-3.4:amd64 (1:3.4-1ubuntu3) ...
    Selecting previously unselected package binfmt-support.
    Preparing to unpack .../binfmt-support_2.1.4-1_amd64.deb ...
    Unpacking binfmt-support (2.1.4-1) ...
    Selecting previously unselected package libclang-common-3.4-dev.
    Preparing to unpack .../libclang-common-3.4-dev_1%3a3.4-1ubuntu3_amd64.deb ...
    Unpacking libclang-common-3.4-dev (1:3.4-1ubuntu3) ...
    Selecting previously unselected package clang-3.4.
    Preparing to unpack .../clang-3.4_1%3a3.4-1ubuntu3_amd64.deb ...
    Unpacking clang-3.4 (1:3.4-1ubuntu3) ...
    Selecting previously unselected package clang.
    Preparing to unpack .../clang_1%3a3.4-0ubuntu1_amd64.deb ...
    Unpacking clang (1:3.4-0ubuntu1) ...
    Selecting previously unselected package libtinfo-dev:amd64.
    Preparing to unpack .../libtinfo-dev_5.9+20140118-1ubuntu1_amd64.deb ...
    Unpacking libtinfo-dev:amd64 (5.9+20140118-1ubuntu1) ...
    Selecting previously unselected package llvm-3.4-runtime.
    Preparing to unpack .../llvm-3.4-runtime_1%3a3.4-1ubuntu3_amd64.deb ...
    Unpacking llvm-3.4-runtime (1:3.4-1ubuntu3) ...
    Selecting previously unselected package llvm-3.4.
    Preparing to unpack .../llvm-3.4_1%3a3.4-1ubuntu3_amd64.deb ...
    Unpacking llvm-3.4 (1:3.4-1ubuntu3) ...
    Selecting previously unselected package libffi-dev:amd64.
    Preparing to unpack .../libffi-dev_3.1~rc1+r3.0.13-12ubuntu0.1_amd64.deb ...
    Unpacking libffi-dev:amd64 (3.1~rc1+r3.0.13-12ubuntu0.1) ...
    Selecting previously unselected package llvm-3.4-dev.
    Preparing to unpack .../llvm-3.4-dev_1%3a3.4-1ubuntu3_amd64.deb ...
    Unpacking llvm-3.4-dev (1:3.4-1ubuntu3) ...
    Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
    Processing triggers for ureadahead (0.100.0-16) ...
    ureadahead will be reprofiled on next reboot
    Processing triggers for install-info (5.2.0.dfsg.1-2) ...
    Setting up libllvm3.4:amd64 (1:3.4-1ubuntu3) ...
    Setting up libobjc4:amd64 (4.8.4-2ubuntu1~14.04.1) ...
    Setting up libobjc-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.1) ...
    Setting up libclang1-3.4:amd64 (1:3.4-1ubuntu3) ...
    Setting up binfmt-support (2.1.4-1) ...
    binfmt-support start/running
    Setting up libclang-common-3.4-dev (1:3.4-1ubuntu3) ...
    Setting up clang-3.4 (1:3.4-1ubuntu3) ...
    Setting up clang (1:3.4-0ubuntu1) ...
    Setting up libtinfo-dev:amd64 (5.9+20140118-1ubuntu1) ...
    Setting up libffi-dev:amd64 (3.1~rc1+r3.0.13-12ubuntu0.1) ...
    Processing triggers for ureadahead (0.100.0-16) ...
    Setting up llvm-3.4-runtime (1:3.4-1ubuntu3) ...
    Setting up llvm-3.4 (1:3.4-1ubuntu3) ...
    Setting up llvm-3.4-dev (1:3.4-1ubuntu3) ...
    Processing triggers for libc-bin (2.19-0ubuntu6.7) ...
    接着安装libicu-dev

    # sudo apt-get install clang libicu-dev
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    clang is already the newest version.
    The following extra packages will be installed:
      icu-devtools libicu52
    Suggested packages:
      icu-doc
    The following NEW packages will be installed:
      icu-devtools libicu-dev libicu52
    0 upgraded, 3 newly installed, 0 to remove and 10 not upgraded.
    Need to get 14.5 MB of archives.
    After this operation, 65.5 MB of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Get:1 http://hk.archive.ubuntu.com/ubuntu/ trusty-updates/main libicu52 amd64 52.1-3ubuntu0.4 [6,752 kB]
    Get:2 http://hk.archive.ubuntu.com/ubuntu/ trusty-updates/main icu-devtools amd64 52.1-3ubuntu0.4 [163 kB]
    Get:3 http://hk.archive.ubuntu.com/ubuntu/ trusty-updates/main libicu-dev amd64 52.1-3ubuntu0.4 [7,588 kB]
    Fetched 14.5 MB in 2min 28s (97.7 kB/s)                                        
    Selecting previously unselected package libicu52:amd64.
    (Reading database ... 79807 files and directories currently installed.)
    Preparing to unpack .../libicu52_52.1-3ubuntu0.4_amd64.deb ...
    Unpacking libicu52:amd64 (52.1-3ubuntu0.4) ...
    Selecting previously unselected package icu-devtools.
    Preparing to unpack .../icu-devtools_52.1-3ubuntu0.4_amd64.deb ...
    Unpacking icu-devtools (52.1-3ubuntu0.4) ...
    Selecting previously unselected package libicu-dev:amd64.
    Preparing to unpack .../libicu-dev_52.1-3ubuntu0.4_amd64.deb ...
    Unpacking libicu-dev:amd64 (52.1-3ubuntu0.4) ...
    Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
    Setting up libicu52:amd64 (52.1-3ubuntu0.4) ...
    Setting up icu-devtools (52.1-3ubuntu0.4) ...
    Setting up libicu-dev:amd64 (52.1-3ubuntu0.4) ...
    Processing triggers for libc-bin (2.19-0ubuntu6.7) ...
    2、下载最新的二进制版本

    # wget https://swift.org/builds/swift-2.2-release/ubuntu1404/swift-2.2-RELEASE/swift-2.2-RELEASE-ubuntu14.04.tar.gz
    swift- <版本> - <平台> .tar.gz文件是工具链本身。所述的.sig文件是数字签名。3、如果您是首次下载Swift包,可导入PGP密钥到你的钥匙圈(可选,主要用于验证包的正确性)
    使用以下命令:

    $ gpg --keyserver hkp://pool.sks-keyservers.net \
          --recv-keys \
          '7463 A81A 4B2E EA1B 551F  FBCF D441 C977 412B 37AD' \
          '1BE1 E29A 084C B305 F397  D62A 9F59 7F4D 21A5 6D5F'
    或者

    $ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -
    如果你之前已导入过钥匙,跳过这一步
    # wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -
    gpg: /root/.gnupg/trustdb.gpg: trustdb created
    gpg: key 412B37AD: public key "Swift Automatic Signing Key #1 <swift-infrastructure@swift.org>" imported
    gpg: key 21A56D5F: public key "Swift 2.2 Release Signing Key <swift-infrastructure@swift.org>" imported
    gpg: Total number processed: 2
    gpg:               imported: 2  (RSA: 2)
    4、验证PGP签名(可选)

    Swift开源项目为Linux 下的.tar.gz文件使用GnuPG生成一个签名密匙文件,大力鼓励每个人都在使用软件之前验证签名,以确定文件的完整性,真实性,安全性。

    首先刷新证书缓存

    # gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift
    gpg: refreshing 2 keys from hkp://pool.sks-keyservers.net
    gpg: requesting key 412B37AD from hkp server pool.sks-keyservers.net
    gpg: requesting key 21A56D5F from hkp server pool.sks-keyservers.net
    gpg: key 412B37AD: "Swift Automatic Signing Key #1 <swift-infrastructure@swift.org>" not changed
    gpg: key 21A56D5F: "Swift 2.2 Release Signing Key <swift-infrastructure@swift.org>" 1 new signature
    gpg: Total number processed: 2
    gpg:              unchanged: 1
    gpg:         new signatures: 1
    gpg: no ultimately trusted keys found
    然后,使用签名文件以验证存档是否完好

    # gpg --verify swift-2.2-RELEASE-ubuntu14.04.tar.gz.sig
    gpg: Signature made Tuesday, March 22, 2016 AM02:15:34 CST using RSA key ID 21A56D5F
    gpg: Good signature from "Swift 2.2 Release Signing Key <swift-infrastructure@swift.org>"
    gpg: WARNING: This key is not certified with a trusted signature!
    gpg:          There is no indication that the signature belongs to the owner.
    Primary key fingerprint: 1BE1 E29A 084C B305 F397  D62A 9F59 7F4D 21A5 6D5F
    如果GPG无法验证,因为你没有公钥(GPG:无法检查签名:不公开密钥),请按照下面的Active签名密钥的指示键导入到你的钥匙圈。

    您可能会看到一个警告:

    gpg: WARNING: This key is not certified with a trusted signature!
    gpg:          There is no indication that the signature belongs to the owner.
    这个密钥没有被证明是可信的签名,没有任何迹象表明签名属于所有者

    5、解压文件用下面的命令

    # tar xzf swift-2.2-RELEASE-ubuntu14.04.tar.gz
    这会创建USR /目录在存档位置的目录下。
    例如:/home/aven/swift-2.2-RELEASE-ubuntu14.04/usr

    6、添加Swift到你的Path环境变量:

    # export PATH=/home/aven/swift-2.2-RELEASE-ubuntu14.04/usr/bin:"${PATH}"
    现在,您可以执行快捷命令来运行交互式解释器(REPL)或建立Swift项目。
    到这里就算安装完成了,你可以切换到任意目录下,输入swift,回车,看看效果吧!

    上图:看最下面,你最熟悉的……,我就不说它是什么了大笑


    注意这里使用export设置的环境变量只是临时的,重新打开shell窗口、重新登录、重新启动之后等都会失效,

    要设置为永久的请参考:Ubuntu修改配置环境变量


    展开全文
  • 这里只是演示如何在ubuntu下编译运行Swift开发的Web后端项目。项目代码来自Bluemix上提供的示例代码,如果你有账号,可以去自己的空间下载,没有的话,可以通过下面的地址下载:...

    这里只是演示如何在ubuntu下编译运行Swift开发的Web后端项目。

    项目代码来自Bluemix上提供的示例代码,如果你有账号,可以去自己的空间下载,没有的话,可以通过下面的地址下载:

    http://download.csdn.net/detail/testcs_dn/9513395


    编译环境安装配置请参考:Ubuntu 14 server安装Swift运行环境

    环境配置好之后,将下载的示例代码解压出来:


    主要代码是“main.swift”,内容如下:

    /**
     * Copyright IBM Corporation 2016
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     * http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     **/
    
    /**
    * Creates a simple HTTP server that listens for incoming connections on port 9080.
    * For each request receieved, the server simply sends a simple hello world message
    * back to the client.
    **/
    
    #if os(Linux)
    import Glibc
    #else
    import Darwin
    #endif
    import Utils
    import Foundation
    
    // Create server socket
    let address = parseAddress()
    let server_sockfd = createSocket(address)
    // Listen on socket with queue of 5
    listen(server_sockfd, 5)
    var active_fd_set = fd_set()
    print("Server is listening on port: \(address.port)\n")
    
    // Initialize the set of active sockets
    fdSet(server_sockfd, set: &active_fd_set)
    
    let FD_SETSIZE = Int32(1024)
    
    // Generate HTTP response
    // Get environment variables
    let environmentVars = NSProcessInfo.processInfo().environment
    var responseBody = "<html><body>Hello from Swift on Linux!" +
      "<br />" +
      "<br />" +
      "<table border=\"1\">" +
      "<tr><th>Env Variable</th><th>Value</th></tr>"
    
    for (variable, value) in environmentVars {
        responseBody += "<tr><td>\(variable)</td><td>\(value)</td></tr>\n"
    }
    
    responseBody += "</table></body></html>"
    
    let httpResponse = "HTTP/1.0 200 OK\n" +
      "Content-Type: text/html\n" +
      "Content-Length: \(responseBody.length) \n\n" +
      responseBody
    
    var clientname = sockaddr_in()
    while true {
      // Block until input arrives on one or more active sockets
      var read_fd_set = active_fd_set;
      select(FD_SETSIZE, &read_fd_set, nil, nil, nil)
      // Service all the sockets with input pending
      for i in 0..<FD_SETSIZE {
        if fdIsSet(i,set: &read_fd_set) {
          if i == server_sockfd {
            // Connection request on original socket
            var size = sizeof(sockaddr_in)
            // Accept request and assign socket
            withUnsafeMutablePointers(&clientname, &size) { up1, up2 in
              var client_sockfd = accept(server_sockfd,
                UnsafeMutablePointer(up1),
                UnsafeMutablePointer(up2))
                print("Received connection request from client: " + String(inet_ntoa (clientname.sin_addr)) + ", port " + String(UInt16(clientname.sin_port).bigEndian))
                fdSet(client_sockfd, set: &active_fd_set)
            }
          }
          else {
            // Send HTTP response back to client
            write(i, httpResponse, httpResponse.characters.count)
            // Close client socket
            close(i)
            fdClr(i, set: &active_fd_set)
          }
        }
      }
    }
    
    可通过以下命令编译并启动服务:

    root@ubuntu:/home/aven/swifttrans# swift build
    root@ubuntu:/home/aven/swifttrans# .build/debug/Server
    Server is listening on port: 9080

    编译时,可能会出现以下错误:

    error: unable to invoke subcommand: /usr/bin/swift-build (No such file or directory)

    服务启动成功后,我们就可以通过浏览器访问了,结果如下图:




    展开全文
  • 翻译自:How to Install Swift and Vapor on Ubuntu 16.04 介绍 Swift是Apple开发的一种编程语言,特点是快,安全和现代化,它有一个支持语言的庞大社区。Swift主要用于开发iOS和Mac OS应用程序,但从Swift 3开始...
  • 尝试在ubuntu上搭建,主要就是ubuntu+swift5.0+vscode+sourcekit-lsp 我用swift4.x编译sourcekit-lsp报错,升级到5.0就过去了,我猜应该是插件升级了; 我也尝试了sourcekite,不过一直配置不成功,希望有经验的...
  • 现在,苹果首先将 Swift 带到了 Ubuntu 平台,下面我将向大家介绍 Ubuntu 如何安装 Swift。 什么是Swift? Swift 是苹果推出的最新编程语言,其目的是为了取代 Objective-C 成为构建 Mac OS X 和 iOS...
  • 标题很长,但也不是故意的,最近打算使用swiftUI开发个APP试试,开发一点后发现,很多的swift语法不是特别的熟悉,而工作电脑的是win10的,所以打算在工作电脑上学习下swift的基本语法。 win10 WSL 安装 ubuntu 在...
  • 1.去swift官网下载对应的版本。  网址如下 : https://swift.org/download/ 2.你在桌面右键单击,看是否能调出终端。 如果可以,就不用配置。如果不可以,去 ...
  • ubuntu 下编译swift

    2019-06-12 20:07:25
    为什么80%的码农都做不了架构师?>>> ...
  • Swift入门 如何在Windows或者ubuntu下安装XCode6环境来开发Swift
  • 自从swift开源以来,搭建swift就不再必须必备MAC了,在开源的ubuntu上也能够安装swift的编译环境,今天闲的无聊就开始自己搭建一个环境玩玩。上午弄了半天的swift环境,最后搭建好了之后就是死活用不了,还显示如下...
  • Swift+Ubuntu on Mac

    2016-07-27 13:08:42
    MBPR带你装Linux带你飞 本周任务:让swift在linux上跑起来 在MacBook Pro Retina上装Linux Parallels + Ubuntu 14.04 在Linux上安装Swift Parallels + Ubuntu 14.04
  • Ubuntu上运行swift

    2017-01-13 15:14:34
    Ubuntu 16.04上安装swift:1、安装clang编译器 clang 编译器是苹果公司提供的 C 编译器,是 Swift 必需的一个组件。在终端运行下面命令执行安装:sudo apt-get install clang libicu-dev2、下载最新的二进制版本 ...
  • 最近也想试水一下iOS应用开发,但又没有Apple Air/Pro之类的设备,也不想装OS X系统,就想到能不能在Windows或者ubuntu下安装XCode6环境来开发Swift?但经过一翻搜索,得到的答案是:XCode只能装在OS X系统上。据我...
  • swift Perfect Ubuntu 部署

    2018-07-20 04:07:57
    swift Perfect 配置阿里服务器中 Ubuntu 部署 安装uuid-dev总是装不上。![图片说明](https://img-ask.csdn.net/upload/201807/20/1532059642_142340.png)
  • 首先声明是参照此博客配置成功的:...Ubuntu 版本:15.10 Swift 版本:https://swift.org/builds/development/ubuntu1510/swift-DEVELOPMENT-SNAPSHOT-2016-04-12-a/swift-DEVELOPME
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • UbuntuSwift单节点安装测试小结 崔炳华 2013年11月20日 1 环境准备 1.1 版本 Linux系统版本:Ubuntu Server 12.04.1 LTS; Swift版本:1.0(稍后安装); Python版本:2.7.3(稍后安装); Python-swiftclient...
1 2 3 4 5 ... 20
收藏数 3,050
精华内容 1,220
热门标签