首页 > 解决方案 > 如何在 ARM (Raspberry Pi) 上运行 swift 和 libDispatch

问题描述

目的是在 Raspberry Pi 3 上运行 swift 和 libDispatch。我使用的是 Ubuntu Core 16.04

我在哪里:我试图让 SR-397 ( https://bugs.swift.org/browse/SR-397 ) 编译 - 这是一个最小的 Swift libDispatch 示例。此 SR 的项目在这里:https ://github.com/sheffler/gcd4和这里:https ://github.com/sheffler/CDispatch

当我尝试编译 gcd4 项目时,我收到此错误:“错误:不再支持空清单文件。用于swift package init自动生成。” 我认为错误消息是由于空的 Package.swift 文件引起的,所以我将 Sheffler CDispatch 项目复制到https://github.com/tree700/CDispatch并添加了一个 Package.swift 文件。我仍然遇到同样的错误,并且无法克服它。

作为背景,我使用从https://github.com/uraimo/buildSwiftOnARM预编译的 Swift 3.1.1 下载,并在我的系统上安装了 Ubuntu libdispatch0 和 libdispatch-dev 包和依赖项。swift 编译器和 Swift 包管理器工作正常,

我很想实现这一点,我在 OS X 上使用 Dispatch,它让并发变得轻而易举。谢谢

标签: swiftarmlibdispatch

解决方案


答案很简单……所需的额外信息在相关博客中。要获取和安装 Swift 3.1.1,请访问https://www.uraimo.com/2017/09/06/A-small-update-on-Swift-for-raspberry-pi-zero-1-2-3/ 说要这样做...

sudo apt-get install git cmake ninja-build clang-3.8 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

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 100

之后,就是解压压缩后的工程文件,将usr/bin目录加入到自己的路径中(或者在usr/bin里面运行swift、swift等)的常规过程

注意:我还必须安装软件包 libpthread-workqueue-dev。如果在 Raspbian 上运行,则需要升级到 Stretch。

——— 顺便说一句,我在使用 Raspberry 3 时发布了 SO question。事实上,当我开始工作时,我正在使用早期的 Pi 模型 B。Pi 3 也将很快拥有 Swift。这是一个简单的 Swift 程序来测试 libdispatch:-

import Foundation
import Dispatch

let queue = DispatchQueue(label: "queueName")
let workItem = DispatchWorkItem(qos: .userInitiated, flags: .assignCurrentContext) {
   print("Hello")
}
queue.async(execute: workItem)

DispatchQueue.main.async {
   print("Hello2")
}

dispatchMain()

推荐阅读