gpt4 book ai didi

swift - 开源 Swift 项目中链接失败

转载 作者:行者123 更新时间:2023-11-30 10:06:09 25 4
gpt4 key购买 nike

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

$ swift build

并得到以下输出:

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:找不到-lobjc的库意味着链接器找不到Objective-C标准库,但是我发现很难相信这两个文件/usr/lib/libobjc.A.dylib/usr/lib/libobjc.dylib 存在于我的文件系统上。

我现在该怎么办?

我的配置是:

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

最佳答案

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

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

$ swift build -Xlinker -v

输出是:

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努力添加/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/我使用 -L 添加的每个搜索路径前面的前缀旗帜
  2. 链接`libobjc.dylib - 有效

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

$ 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命令现在正在运行并且产品运行正常。但是,我不认为这是用户友好的安装过程,Apple。

关于swift - 开源 Swift 项目中链接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com