我正在使用Xcode开发一个应用程序。
当我尝试构建时,会出现此错误:
ld: in /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o, file too small for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有谁知道什么是错的?
答案 0 :(得分:146)
窃取@ martin-baulig的回答:
尝试完全重建/清理。前一个版本可能已异常中止,导致TWRAppDelegate.o文件损坏或零大小。
答案 1 :(得分:9)
我通常会向相关文件添加一个空格(可能是任何字符),删除它然后保存。 比干净的构造更容易和更快。
答案 2 :(得分:3)
rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData
答案 3 :(得分:1)
由于构建一个干净的项目可能会花费太长时间,因此对于那些可以访问缓存中已损坏文件的人来说,有更短的方法:
完整版,这样您就可以轻松找到该文件:
答案 4 :(得分:1)
您可以删除TWRAppDelegate.o文件并继续构建。复制错误消息中提到的完整路径并将其粘贴到终端中的“rm”命令后面。无需清理/重建,删除派生数据,从项目中添加/删除文件等。
答案 5 :(得分:1)
要自动解决此问题,可以添加Build Script Phase
。转到Xcode->您的项目->您的目标->构建阶段-> +->新运行脚本阶段
将其重命名为Xcode Link Fix
,并将其移至Compile Sources
阶段上方。将其粘贴到脚本主体中:
# Legacy build system
legacy_dir=`dirname "$LD_DEPENDENCY_INFO_FILE"`
find "$legacy_dir" -size 0 | while read -d $'\n' file; do
rm "$file"
done
# New build system
find "$OBJECT_FILE_DIR_normal" -size 0 | while read -d $'\n' file; do
rm "$file"
done
此脚本检查大小为零的目标文件并删除它们,以便在下一步完成编译时成功完成。
如果有许多应用目标,则需要为每个应用目标添加此脚本。
此脚本需要大约0.1秒的时间才能运行,并且可以避免您进行全面的项目重建。
答案 6 :(得分:0)
步骤1.转到:项目>构建设置>搜索路径
步骤2.设置"始终搜索用户路径"是的
步骤3.构建项目(您将收到警告,但项目将构建。)
步骤4.设置"始终搜索用户路径"返回否并再次构建以消除警告
答案 7 :(得分:0)
在我的情况下没有干净的重建,所以我解释我是如何解决问题的:
- 删除对文件的引用(不删除文件)
- 再次将文件添加到项目中并运行
答案 8 :(得分:0)
无需完全清除缓存就可以纠正错误的快速方法:
TWRAppDelegate
的情况下)