gpt4 book ai didi

ios - Cordova 命令行构建在 Mac 上的/tmp 中失败

转载 作者:可可西里 更新时间:2023-11-01 03:29:35 25 4
gpt4 key购买 nike

我在从命令行构建全新的 PhoneGap 应用程序时遇到链接器错误。它创建了一堆文件,如果我在 Xcode 中打开创建的 .xcodeproj,它构建得很好。那么我的命令行环境出了什么问题?

$ phonegap create /tmp/buildtest-ios
$ cd /tmp/buildtest-ios
$ phonegap -V build ios
[phonegap] detecting iOS SDK environment...
[phonegap] Checking iOS requirements...
[phonegap] using the local environment
[phonegap] compiling iOS...
[phonegap] Generating config.xml from defaults for platform "ios"
[phonegap] Compiling app on platform "ios" via command "/private/tmp/buildtest-ios/platforms/ios/cordova/build"
[error] An error occurred while building the ios project.** BUILD FAILED **


The following build commands failed:
Check dependencies
(1 failure)
** BUILD FAILED **


The following build commands failed:
Ld /private/tmp/buildtest-ios/platforms/ios/build/emulator/HelloWorld.app/HelloWorld normal i386
(1 failure)

如果我自己从命令行运行有问题的 Ld 命令,我会得到“找不到文件”。这是否意味着编译器失败并且链接器错误只是转移注意力?

这是 Mac OS X 10.9 上的 PhoneGap 3.3.0-0.18.0。我可以使用此安装创建和构建 Android 应用程序,没问题。如果我直接使用 cordova,我会得到完全相同的行为。我已经在两台具有相同症状的 Mac 上尝试过。

最佳答案

我终于使用 cordova 命令行工具找到了答案。 Cordova 有一个 -d 标志,它比 PhoneGap 的 -V 标志更冗长。链接器因一堆错误而失败,例如

duplicate symbol _OBJC_METACLASS_$_CDVTimer in:
/private/tmp/buildtest-ios/platforms/ios/build/emulator/libCordova.a(CDVTimer.o)
/tmp/buildtest-ios/platforms/ios/build/emulator/libCordova.a(CDVTimer.o)

请注意,Mac 上的 /tmp/private/tmp 的符号链接(symbolic link),因此它们指向同一个文件。难怪它们是重复的符号!那么为什么它要两次包含同一个文件呢?

我尝试在空文件夹 /private/my-new-tmp2/buildtest-ios 中创建一个新的测试项目。构建它失败并出现相同的错误。显然,Cordova 的 iOS 项目和 Mac OS X 10.9 上 /private 目录中的 Ld 链接器有些奇怪,我是唯一尝试过此操作的人。 (正如我所说,为 Android 构建工作正常。)

如果其他人遇到同样的问题,解决方案是在 /Users/me/some/directory 中构建项目,而不是在 /tmp 中的任何地方或 /private。问题解决了。

关于ios - Cordova 命令行构建在 Mac 上的/tmp 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20436448/

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