歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 運行在 Linux 平台的開源 Swift

運行在 Linux 平台的開源 Swift

日期:2017/2/28 13:55:21   编辑:Linux教程

Swift 開源了,喜大普奔之後,我們發現它現在變成跨平台的了,開源後的 Swift 不止能運行在 MAC 和 iOS 平台,現在也可以運行在 Linux 平台了。我們現在就來看看 Linux 上的 Swift。

安裝 Linux 環境

swift.org 網站上面提供了在 Linux 上面安裝 Swift 環境的完整指引。當前 Swift 支持 Ubuntu 15.10 和 Ubuntu 14.04 兩個版本。

如果你已經安裝好 Ubuntu 環境了,就可以跳過這一節,繼續後面內容。

如果要運行 Linux 版本的 Swift,首先你需要一個 Linux 環境,如果你自己有 Linux 服務器,它可以作為運行環境,或者你有一台裝有 Linux 系統的電腦,也可以將它作為運行環境。

  1. VirtualBox

當然,更加普遍的情況應該是通過虛擬機來運行 Linux,我們可以使用 VirtualBox 作為虛擬機環境。

我們可以在 VirtualBox 的下載頁面進行下載: https://www.virtualbox.org/wiki/Downloads

打開頁面後,根據自己電腦的平台,下載相應的版本。

下載完成後,按照安裝指引將 VirtualBox 安裝好。

現在,虛擬機環境安裝好了,我們還要給這個虛擬機安裝一個操作系統,也就是我們需要的 Ubuntu。

  1. Vagrant

之前用過虛擬機的同學可能想到,先去 Ubuntu 網站下載一個鏡像,然後掛載到虛擬機中,這是一個比較通用的做法。

當然我們還可以用一個更加簡便的方法,那就是 Vagrant

Vagrant是 VirtualBox 的一個命令行工具,可以幫助我們快速配置和部署 VirtualBox 主機。 我們可以在這裡下載 Vagrant 的安裝程序: https://www.vagrantup.com/downloads.html

Vagrant通過一個名為 Vagrantfile 的文件來進行虛擬機的部署操作,這個文件存存儲的是一段腳本,用來聲明我們的部署任務。

接下來,創建一個文件夾作為我們的虛擬機目錄,然後在這個文件夾中創建一個 Vagrantfile 文件:

Vagrant.configure(2) do |config|

  config.vm.box = "https://cloud-images.ubuntu.com/vagrant/trusty/20151201/trusty-server-cloudimg-amd64-vagrant-disk1.box"

  config.vm.provision "shell", inline: <<-SHELL

    sudo apt-get --assume-yes install clang
    curl -O 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
    tar zxf swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz	
    echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin:\"${PATH}\"" >> .profile
  SHELL
end

創建好之後,我們可以在這個目錄下,運行命令進行安裝了:

vagrant up

接下來, vagrant 就會幫我們進行虛擬機環境的安裝部署了,安裝過程需要一些時間,取決於你的網速。這段時間我們正好來分析一下 Vagrantfile 腳本的內容。

  1. 這個腳本第一步會幫助我們下載 Ubuntu 的安裝包,通過這行配置信息:
config.vm.box = "https://cloud-images.ubuntu.com/vagrant/trusty/20151201/trusty-server-cloudimg-amd64-vagrant-disk1.box"

我們通過 config.vm.box 配置了 Ubuntu 安裝包所在的位置,我們這裡的 URL 指向的是 Ubuntu LTS 14.04 的鏡像文件。當然,你還可以切換成其他的鏡像源,訪問 https://cloud-images.ubuntu.com/vagrant 可以查看現有的 vagrant 安裝鏡像的列表,可以進行自由選擇(注意:Swift 目前支持 Ubuntu 14.04 和 Ubuntu 15.10 兩個版本)。

  1. 鏡像安裝完成後,我們接下來指定了系統啟動後執行的配置腳本:
config.vm.provision "shell", inline: <<-SHELL
## shells
SHELL

在一對 <<-SHELLSHELL 中,就是我們要運行的配置腳本了,首先我們運行:

sudo apt-get --assume-yes install clang

這個命令,來安裝 clang 編譯器,這個是蘋果公司提供的 C 編譯器,是 Swift 必需的一個組件。

接下來通過 curl 命令來下載 Swift 包:

curl -O 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

我們腳本中得 Swift 包下載地址來自 https://swift.org/download 這個頁面,也可以根據你自己的需求配置需要下載的包。

接下來的 tar 命令,用於將下載完成的 Swift 包解壓出來:

tar zxf swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz

最後,將 Swift 的 bin 目錄寫入環境變量,這樣系統就可以找到我們要執行的命令了:

echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin:\"${PATH}\"" >> .profile

安裝配置完成後,我們輸入如下命令進入 Ubuntu 的命令行:

vagrant ssh

進入命令行後,可以輸入 swift --version 命令驗證 Swift 是否安裝成功。

如果安裝成功,我們就可以收到類似這樣的輸出:

Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c)

開始使用 Linux 平台上的 Swift

好了, Swift 安裝成功了,我們可以開始創建我們的第一個程序了,按照慣例,自然是 Hello World 程序。

使用 vim helloworld.swift 命令創建一個源文件。

然後在 Vim 中輸入 i 進入插入模式,在源文件中輸入:

print("Hello, world")

代碼寫完啦,我們按下 Esc 進入操作模式,然後輸入 :wq 保存退出。

源文件創建好之後,我們可以使用 swiftc 命令編譯我們的代碼。

swiftc helloworld.swift

編譯好之後,我們使用 ls 命令查看一下當前目錄的內容,除了 helloworld.swift 文件,編譯器為我們生成了一個 helloworld 可執行文件。我們可以運行這個文件:

./helloworld
Hello, world

運行成功了, 一個完整的程序,從代碼到編譯成功如此的簡單,有沒有很爽的感覺~,Swift 程序不需要導入很多基礎的庫,也不需要寫任何的 main 函數,默認會將外層語句作為程序的入口,這些都融入了現代化的開發思維。

當然,Swift 能做的事情遠遠不止 Hello World 這麼簡單,Swift 開源的意義不只是能讓我們在 Linux 開發和編譯 Swift 程序,也不是能讓我們看到 Swift 的源代碼。開源的意義更多在於它提供的社區化功能,能讓我們充分共享每個人的開發成果。就像是 NodeJS 社區一樣,相信使用過 NodeJS 的開發者都會有這樣的感覺 - 比如你的項目需���一個圖片處理功能,去 NodeJS 的包管理社區 npmjs.com 上面找一下,馬上就能找到相應的第三方庫解決這個問題。而且這些第三方庫幾乎是和你的項目無縫集成的,這才是開源社區給予我們最大的力量。

使用 Swift 包管理

同樣,開源的 Swift 也提供了包管理平台,相信今後無論你使用 Swift 開發一款 iOS APP, 甚至是一個 Linux 服務端程序,你都能夠很快的在包管理平台上找到快速解決問題的第三方庫。

下面我們就來看看如何使用 Swift 的包管理系統。Swift 開源社區在 Github 上提供了一個例子說明了這個問題,首先我們在 Ubuntu 上面安裝 git 命令工具:

sudo apt-get --assume-yes install git

安裝成功後,將 Swift 包管理的示例從 Github 上面復制出來:

git clone https://github.com/apple/example-package-dealer.git

復制成功後,我們用 ls 命令看到這個包裡面有 4 個文件:

CONTRIBUTING.md  
Package.swift  
README.md  
main.swift

其中 main.swift 是程序的代碼文件,而 Package.swift 就是包管理文件,我們來看一下 Package.swift 的內容:

import PackageDescription

let package = Package(
    name: "Dealer",
    dependencies: [
        .Package(url: "https://github.com/apple/example-package-deckofplayingcards.git", majorVersion: 1),
    ]
)

這裡面定義了我們這個包的名稱: name: "Dealer" , 然後還定義了它的依賴關系, 它依賴於另外一個代碼庫:

https://github.com/apple/example-package-deckofplayingcards.git

通過 Package.swift 的定義, swift build 命令就可以根據相應的依賴關系,自動為我們的項目抓取那些需要的第三方庫。

我們現在可以運行 build 命令:

swift build

可以看到, swift build 正在替我們把各種項目的依賴關系處理了一遍:

Cloning Packages/example-package-deckofplayingcards
Cloning Packages/example-package-fisheryates
Cloning Packages/example-package-playingcard
Compiling Swift Module 'FisherYates' (1 sources)
Linking Library:  .build/debug/FisherYates.a
Compiling Swift Module 'PlayingCard' (3 sources)
Linking Library:  .build/debug/PlayingCard.a
Compiling Swift Module 'DeckOfPlayingCards' (1 sources)
Linking Library:  .build/debug/DeckOfPlayingCards.a
Compiling Swift Module 'Dealer' (1 sources)
Linking Executable:  .build/debug/Dealer

從輸出可以看到,我們復制出來的這個項目的依賴項目,又依賴了其他的項目,形成了一個依賴鏈條。

swift build 命令運行完成自後,我們會發現項目的根目錄中多了一個 Packages 目錄,這個目錄裡面存放了我們抓取下來的依賴項目:

+ Packages 
|	example-package-deckofplayingcards-1.0.2
|	example-package-fisheryates-1.0.2
|	example-package-playingcard-1.0.1

這個就是 Swift 包管理系統的基本概念了。

結語

相信關於包管理,我們應該並不陌生,Swift 包管理和 CocoaPods , Carthage 這些我們常用的包管理工具很類似,隨讓Swift 包管理工具不是第一個,但這確是蘋果公司的第一次,相信開源後的 Swift 會更加壯大。

Ubuntu 15.10安裝部署Swift開發環境 http://www.linuxidc.com/Linux/2016-01/126995.htm

Swift 的變化:從 2.2 到 3.0 會帶來什麼 http://www.linuxidc.com/Linux/2015-12/126440.htm

Swift 正式開源,同時開源 Swfit 核心庫和包管理器 http://www.linuxidc.com/Linux/2015-12/125847.htm

Apple Swift學習教程 http://www.linuxidc.com/Linux/2014-09/106420.htm

使用 Swift 構建一個 iOS 的郵件應用 http://www.linuxidc.com/Linux/2014-08/105542.htm

Swift 2.0開源化 http://www.linuxidc.com/Linux/2015-06/118594.htm

Linux下搭建Swift語言開發學習環境 http://www.linuxidc.com/Linux/2015-12/125983.htm

Swift 的詳細介紹:請點這裡

Copyright © Linux教程網 All Rights Reserved