ubuntu

우분투에서 애플 스위프트(Swift) 공부환경 구축하기

소화자/ editor

  • 0 comments
  • 3,512 views
  • 2017년 12월 3일

아마 이미 아시고 사용하시는 분도 많으시겠지만,
애플(Apple)의 오브젝트-C(Object-C) 언어를 잇는 새로운 프로그래밍 언어 스위프트(Swift)는
맥이 없으면 공부 할 수 없었지만, 많은 사람들의 요청을 애플(Apple) 이 받아들여
오픈소스(Open-Source)화 하면서 우분투(Ubuntu)에서도 공부할 수 있게 되었습니다.
우분투(Ubuntu)에서 스위프트(Swift)사용을 위한 기본환경 구축을 알아보도록 하겠습니다.

이미 아시고 사용하시는  분도 많겠지만

애플의 오브젝트-C(Object-C) 언어를 잇는 새로운 프로그래밍 언어 스위프트(Swift)는 맥이 없으면 공부 할 수 없었지만,

많은 사람들의 요청을 애플(Apple) 이 받아들여 오픈소스(Open-Source)화 하면서 우분투(Ubuntu)에서도

공부할 수 있게 되었습니다.

우분투(Ubuntu)에서 스위프트(Swift)사용을 위한 기본환경 구축을 알아보도록 하겠습니다

1 스위프트(Swift) 설치

먼저 Download Swift 에 접속하시면 아래와 같은 화면이 보이실 겁니다.

 

저는 우분투 14.04 버젼을 쓰고 있어서, Ubuntu 14.04 파일을 ~/Downloads 디렉토리에 다운로드 받았습니다.

(Signature) 도 클릭하여 Signature 파일도 다운로드  받아 둡니다.

## 사전 필요 패키지를 설치합니다.
$ sudo apt-get install clang libicu-dev

## 다운 받은 디렉토리로 이동합니다. 
$ cd ~/Downloads

## signature 파일로 키등록을 합니다.(꼭 필요한 것 같진 않습니다.)
$ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -
$ gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift
$ gpg --verify swift-3.0.2-RELEASE-ubuntu14.04.tar.gz.sig

## 압축을 푸는 폴더가 설치 폴더가 되니 원하시는 곳에 압축을 풉니다.
$ tar xzf  swift-3.0.2-RELEASE-ubuntu14.04.tar.gz

## 어디서든 swift 명령을 쓰기 위해 ~/.bashrc 파일 끝에 아래 라인을 추가합니다.
export PATH=/다운받은폴더 절대경로/swift-3.0.2-RELEASE-ubuntu14.04/usr/bin:"${PATH}"

## ~/.bashrc 수정을 반영시킵니다.
$ source ~/.bashrc
$ echo $PATH       ## 잘 반영되었는지 결과 확인합니다.
$ which swift      ## swift 명령어가 검색되는지 확인합니다.

2  기본 사용법

정말  잘 설치 되었는지  아래와 같은 결과가 나오는지 확인해 봅니다.

$ swift --version
  Swift version 3.0.2 (swift-3.0.2-RELEASE)
  Target: x86_64-unknown-linux-gnu
$ swift         ## REPL(Read-Eval-Print-Loop) 방식
Welcome to Swift version 3.0.2 (swift-3.0.2-RELEASE). Type :help for assistance.
  1> print("Hello Html5Around.com")
Hello Html5Around.com
  2> 272 + 272
$R0: Int = 544
  3> :q

위와 같이 나오면 문제 없이 잘 설치된 것입니다.

저의 경우에 문제가 있어 위처럼 한번에 되지는 않았습니다.

제가 겪은 트러블에 대해서는 아래쪽에서 따로 설명 드리겠습니다.

3 활용하기

홈 디렉토리 아래에 원하시는 이름(저의 경우 Swift)으로 디렉토리를 만들고,

그 아래 sources 란 이름으로  디렉토리를 미리 만들어 둡니다. 아래 처럼

$ cd ~
$ mkdir Swift
$ cd Swift
$ mkdir sources

이제 ~/Swift 디렉토리에서 아래 내용으로 test.swift 란 이름으로 파일을 만듭니다.

print("Hello ")
print("Html5Around^-^")

단순 실행

$ swift ./test.swift   ## 화면에 2줄로 Hello Html5ARound^-^ 가 보입니다.

컴파일 & 실행파일 만들기

$ swiftc -o html5 ./test.swift  ## 컴파일해서 html5란 실행 파일을 만들어 냅니다.
$ ./html5                       ## 화면에 2줄로 Hello Html5ARound^-^ 가 보입니다.

빌드 활용하기

Swift 디렉토리에 아래 내용으로 Package.swift 파일을 만들어 둡니다.

import PackageDescription

let package = Package(
    name: "FirstSwift"
)

좀전에 사용했던 test.swift 파일을 main.swift로 파일명을 바꿔서 sources 폴더로 이동시킵니다.

$ cd ~/Swift 
$ mv test.swift  ./sources/main.swift ## 파일명 main에 유의하세요

## 빌드 해 봅니다 ##
$ swift build   ## 아래와 같은 메세지가 출력 됩니다.
 warning: minimum recommended clang is version 3.6, otherwise you may encounter linker errors.
 Compile Swift Module 'FirstSwift' (1 sources)
 Linking ./.build/debug/FirstSwift

$ ./.build/debug/FirstSwift  ## 화면에 2줄로 Hello Html5ARound^-^ 가 보입니다.

swift build 라 명령하면 sources 디렉토리의 main.swift 파일을 컴파일 하여 (main 파일명 유의!)

~/Swift/.build/debug/ 폴더를 자동으로 만들고 그 안에 FirstSwift란 실행파일을 만들어 냅니다.

Package.swift 파일안에서  name: “FirstSwift”  역할이 실행파일명입니다. (swiftc -o 역할이지요)

4 트러블 대응

저의 경우 설치한 뒤에 swift REPL 기능을 쓰면

Segmentation fault (core dumped)에러가 발생하고

swift test.swift 명령어를 치면

<unknown>:0: error: opening import file for module 'SwiftShims': No such file or directory

발생하여 구글링을 정신없이 한 결과 다행히 아래 방법중  방법 1:  로 해결되었습니다.

방법 1:
$ sudo apt-get install ppa-purge
$ sudo ppa-purge -d trusty ppa:ubuntu-toolchain-r/test
방법 2:
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt-get update
$ sudo apt-get install g++-4.9 ### need?  ###
$ sudo apt-get install ppa-purge
$ sudo ppa-purge -d trusty ppa:ubuntu-toolchain-r/test

마치며

swift build 명령시  아래와 같은 경고 메세지가 나옵니다만,

warning: minimum recommended clang is version 3.6, otherwise you may encounter linker errors.

제 경험 기준으로 말씀 드리면, clang-3.8(확실히 문제) 이나 3.6(3.8로 이미 망친 상태라서 ?)으로

업그레이드는 추천 드리지 않습니다.

제 우분투 14.04에서는 clang-3.8, 3.6도 linker가 제대로 동작하지 않았습니다.

애플 맥에서 만큼은 안 되겠지만, 이제 우분투에서 스위프트 프로그래밍을 즐기시길 바랍니다.

 

이 글이 누군가에겐 조금이나마 도움이 되었으면 하는 작은 바램입니다.

소화자

존재를 드러내지 않고 무림의 배후를 조정하는 전설로만 전해지는 무엇이든 소화하는... 갑 오징어~^-^

Leave a Reply

avatar