- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在努力在 Ubuntu 16.04 上安装 Swift 3.0 和 GCD。这在今天应该是可能的,对吧?
以下是从 swift.org 下载 Swift 3、从 GitHub 克隆、构建和安装 swift-corelibs-libdispatch 的 Ansible 任务。
即使 libdispatch 的安装没有错误地完成,它也不起作用。当我尝试在 Swift repl 中 import Dispatch
时,它提示缺少功能“ block ”。检查 Makefile 确认,至少向编译器提供了标志 -fblocks
。
这是 Swift repl 的示例输出:
vagrant@swift3:/tmp/swift-3.0-PREVIEW-3-ubuntu15.10/usr/bin$ ./swift
Welcome to Swift version 3.0 (swift-3.0-PREVIEW-3). Type :help for assistance.
1> 6 * 7
$R0: Int = 42
2> import Dispatch
error: module 'CDispatch' requires feature 'blocks'
error: could not build Objective-C module 'CDispatch'
2>
用于设置盒子的 Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.ssh.forward_agent = true
config.vm.box = "bento/ubuntu-16.04"
config.vm.define "swift3" do |dev|
dev.vm.hostname = "swift3.dev"
end
config.vm.network :private_network, ip: "10.0.0.10"
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/main.yml"
end
end
安装 Swift 3 的 Ansible 任务:
---
- name: Install Swift 3 requirements
apt: name={{ item }} state=installed
with_items:
- autoconf
- clang
- git
- libblocksruntime-dev
- libbsd-dev
- libcurl4-openssl-dev
- libdispatch-dev
- libkqueue-dev
- libpython2.7-dev
- libtool
- pkg-config
- name: download Swift 3
get_url: url=https://swift.org/builds/swift-3.0-preview-3/ubuntu1510/swift-3.0-PREVIEW-3/swift-3.0-PREVIEW-3-ubuntu15.10.tar.gz
dest=/tmp/swift.tgz mode=0440
- name: unarchive Swift 3
unarchive: dest=/tmp src=/tmp/swift.tgz copy=no creates=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10
- name: clone Swift 3 libdispatch core library
git: repo=https://github.com/apple/swift-corelibs-libdispatch dest=/tmp/swift-corelibs-libdispatch
version=swift-3.0-preview-3-branch force=true
- name: generate Swift 3 libdispatch build files
command: "sh ./autogen.sh"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: configure Swift 3 libdispatch
command: "sh ./configure --with-blocks-runtime=/usr/lib/x86_64-linux-gnu --with-swift-toolchain=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10/usr --prefix=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10/usr"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: make Swift 3 libdispatch
command: "make"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: install Swift 3 libdispatch
command: "make install"
args:
chdir: /tmp/swift-corelibs-libdispatch
- name: grant permissions to use Swift 3
file: dest=/tmp/swift-3.0-PREVIEW-3-ubuntu15.10 mode=a+rX recurse=true
最佳答案
正如您所注意到的,-fblocks
链接器标志在编译时为 libdispatch 适当设置。这太棒了,因为现在您有了 libdispatch 的工作版本。
不幸的是,您制作的任何包含Dispatch
的内容也也需要-fblocks
链接器标志.
tl;dr 解决方案是在编译时简单地向 swiftc
提供 -Xcc -fblocks
。
这就是我所说的解决方法。提出了更长期的解决方案"ClangImporter: enable -fblocks on non-Darwin platforms" .在此之前,尽管上述变通办法是从你所在的位置到你想去的位置的最短距离。
我会自己添加,我只是使用上面的拉取请求中的补丁来修补我的本地构建。 YMMV.
关于linux - 使用 Ansible 在 Linux 上安装 Swift 3 + libdispatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38782633/
我有时会在 libdispatch 深处崩溃,以下回溯源自 SecItemCopyMatching功能。 * thread #1: tid = 0x169ee8, 0x0374c830 libdisp
我正在尝试将 GCD(Grand Central Dispatch)应用程序移植到 Ubuntu,我发现了 libdispatch ubuntu 包 apt-get install libdi
我正在尝试构建一个必须管理自己的运行循环的应用程序。我想在此应用程序中使用 libdispatch。但是,使用 libdispatch 需要调用 dispatch_main() ,这是一种阻塞方法。我
Date/Time: 2013-05-22 21:31:31.863 -0400 OS Version: iOS 6.1.3 (10B329) Report Version: 104 Excep
我这里有一个奇怪的问题。 我使用仪器来查看我的应用程序的泄漏情况。 而且我发现corehandwriting函数会被libdispatch.dylib调用,占用很大 内存空间大小。 但是,如果将此应用
我正在尝试编译 libdispatch for linux在安卓系统上。但是我在项目文件中找不到任何适用于 Android 的说明。 我可以看到有 several计算器 questions关于使用 l
我很难理解下面的代码: struct dispatch_block_private_data_s { DISPATCH_BLOCK_PRIVATE_DATA_HEADER(); sta
我刚刚向 App Store 发布了一个 OSX 应用程序,有报告称它在 OSX 10.9.5 上崩溃 以下是用户崩溃报告中的相关信息: Crashed Thread: 0 Dispatch qu
我喜欢 dispatch_data_t。它在内存范围之上提供了一个有用的抽象:它提供引用计数,允许消费者创建任意子范围(参与父范围的引用计数),连接子范围等。(我不会'不要费心去了解血淋淋的细节——文
我很想尝试 grand central dispatch,但我只能在 Ubuntu 工作站上进行开发。 libdispatch 和 c/obj-c 等的 block 扩展是否在 Linux 上可用?如
在基于文档的启用 ARC 的应用程序中,我有一个正在打开 HTML 文件的 WebView。我们的想法是进行一些编辑,然后保存到 WebArchive。当我运行 Instruments 时,我发现随机
早上好 我的应用程序遇到了崩溃。当用户尝试启动它时,他等了一分钟,然后引发了一个 std::exception。真的,我无法自己重现这个错误,但这似乎是一个很常见的问题。 我唯一可以跟踪的是系统日志中
我正在研究多线程,与使用 pthread.h 和 pthreads-win32好得多的选择。然而,尽管看起来 libdispatch 正在或即将在大多数较新的 POSIX 兼容系统上工作……我不得不问
我在 Android 平台上使用开源的 libDispatch (GCD)。因此,大多数复杂的耗时任务都是通过 NDK 完成的(我在其中使用 libDispatch)。 对于某些调用,我正在使用 di
我正在编译 Apple libdispatch。但是出现了错误错误:无法找到 SDK“macosx.internal”(在目标“libdispatch”中) 有没有人以前遇到过这个错误? 最佳答案 b
目标是在 Raspberry Pi 3 上运行 swift 和 libDispatch。我使用的是 Ubuntu Core 16.04 我现在的位置:我试图编译 SR-397 ( https://bu
有关更详细的信息,请参阅以下链接: Project A Inception - We must go deeper 简而言之:我在开发 cocos2d 游戏时注意到内存分配失控。我回溯并检查了 coc
查看多个 iOS 崩溃日志,我发现堆栈跟踪几乎相同,唯一的异常(exception)是来自 libdispatch.dylib 的上述行。我很好奇这种差异是否有意义(因此,这些崩溃应该分成不同的桶)或
我正在 Swift 3 中创建一个服务器端应用程序。我选择了 libevent 来实现网络代码,因为它是跨平台的,并且没有 C10k 问题。 Libevent 实现了它自己的事件循环,但我想保持 CF
我正在努力在 Ubuntu 16.04 上安装 Swift 3.0 和 GCD。这在今天应该是可能的,对吧? 以下是从 swift.org 下载 Swift 3、从 GitHub 克隆、构建和安装 s
我是一名优秀的程序员,十分优秀!