首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开源Swift项目中的链接失败

开源Swift项目中的链接失败
EN

Stack Overflow用户
提问于 2016-03-07 12:59:07
回答 1查看 228关注 0票数 0

我一直在关注关于http://swift.org的“入门”教程。在创建新的Swift "Hello“项目时,我运行了shell命令:

代码语言:javascript
复制
$ swift build

得到了以下输出:

代码语言:javascript
复制
Compiling Swift Module 'MyProject' (1 sources)
Linking MyProject
ld: library not found for -lobjc
<unknown>:0: error: build had 1 command failures
error: exit(1): /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-02-25-a.xctoolchain/usr/bin/swift-build-tool -f /Users/petrmanek/Projekty/MyProject/.build/debug.yaml default

我假设ld: library not found for -lobjc意味着链接器找不到目标-C标准库,但是我觉得这很难相信,因为文件系统中同时存在文件/usr/lib/libobjc.A.dylib/usr/lib/libobjc.dylib

我现在该干啥?

我的配置是:

代码语言:javascript
复制
Hardware: Mac mini (Late 2012)
OS: Mac OS 10.11 El Capitan

uname -a
    Darwin tywin 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64

swift --version
    Apple Swift version 3.0-dev (LLVM b361b0fc05, Clang 11493b0f62, Swift fc261045a5)
    Target: x86_64-apple-macosx10.9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-07 13:23:30

我想我已经解决了。如果有人感兴趣的话,这是我的解决方案。

查看swift-build --help选项列表,我发现了选项-Xlinker,它允许我直接为ld指定标志。我使用这个选项告诉它使用命令更详细:

代码语言:javascript
复制
$ swift build -Xlinker -v

产出如下:

代码语言:javascript
复制
Linking MyProject
@(#)PROGRAM:ld  PROJECT:ld64-242
configured to support archs: i386 x86_64 x86_64h armv6 armv7 armv7s armv7m armv7k arm64
Library search paths:
    /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-02-25-a.xctoolchain/usr/lib/swift/macosx
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/lib
Framework search paths:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/
ld: library not found for -lobjc
<unknown>:0: error: build had 1 command failures
error: exit(1): /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-02-25-a.xctoolchain/usr/bin/swift-build-tool -f /Users/petrmanek/Projekty/MyProject/.build/debug.yaml default

这是相当混乱的,但我们可以看到,/usr/lib不在库搜索路径中。我有两个选择:

  1. 添加/usr/lib作为搜索路径--这不起作用,因为ld努力在我使用-L标志添加的每个搜索路径前面添加/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/前缀
  2. 链接`libobjc.dylib -工作的

下面是我使用的shell命令(我对libSystem做了同样的事情,因为它需要相同的处理):

代码语言:javascript
复制
$ cd /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-02-25-a.xctoolchain/usr/lib/swift/macosx
$ sudo ln -s /usr/lib/libobjc.dylib 
$ sudo ln -s /usr/lib/libSystem.dylib 

swift build命令现在正在工作,产品运行正常。然而,我不相信这是用户友好的安装过程,苹果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35844397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档