Xcode链接器错误:文件太小,不适用于架构x86_64

tbo*_*odt 72 macos xcode cocoa objective-c ios

我正在用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)
Run Code Online (Sandbox Code Playgroud)

有谁知道什么是错的?

Pet*_* K. 158

窃取@ martin-baulig的回答:

尝试完全重建/清理.前一个版本可能已异常中止,导致TWRAppDelegate.o文件损坏或零大小.

  • 最后!你应得的. (7认同)
  • 我的项目需要一段时间才能构建。如果您异常停止构建,则可以删除仅损坏的1-4个目标文件,而不是全部删除。 (2认同)

Ant*_*ich 12

Build Script Phase可以添加自动修复这个问题。转到 Xcode -> Your Project -> Your Target -> Build Phases -> + -> New Run Script Phase

将其重命名为Xcode Link Fix并将其移动到Compile Sources阶段之上。将其粘贴到脚本正文中:

# Legacy build system
legacy_dir=`dirname "${LD_DEPENDENCY_INFO_FILE}"`
if [ -d "${legacy_dir}" ]; then
    find "${legacy_dir}" -size 0 | while read -d $'\n' file; do
        rm "$file"
    done
fi

# New build system
if [ -d "${OBJECT_FILE_DIR_normal}" ]; then
    find "${OBJECT_FILE_DIR_normal}" -size 0 | while read -d $'\n' file; do
        rm "$file"
    done
fi
Run Code Online (Sandbox Code Playgroud)

此脚本检查大小为零的目标文件并将其删除,以便在下一步中完成编译时成功。

如果您有多个应用程序目标,则需要为每个应用程序目标添加此脚本。

此脚本需要大约 0.1 秒才能运行,并使您免于完整的项目重建。


gra*_*ito 11

我通常会向相关文件添加一个空格(可能是任何字符),删除它然后保存.比干净的构造更容易和更快.

  • 您的回答为我节省了重建项目的10分钟时间!谢谢 (2认同)

yey*_*ilk 9

rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData


hai*_*ngn 6

只需通过在终端应用程序中运行 cmd 删除此文件:

rm /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o
Run Code Online (Sandbox Code Playgroud)