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)
誰が間違っているか知っていますか?
@ martin-bauligの答えを盗む:
完全な再構築/クリーニングを試してください。以前のビルドが異常終了し、TWRAppDelegate.oファイルが破損またはゼロサイズのままになる可能性があります。
私は通常、問題のファイルにスペース(そのことについては任意の文字)を追加し、削除してから保存します。クリーンビルドよりも簡単かつ迅速。
rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData
ターミナルアプリでcmdを実行してこのファイルを削除するだけです。
rm /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o
TWRAppDelegate.oファイルを削除して、ビルドを続行できます。エラーメッセージに記載されているフルパスをコピーし、ターミナルの「rm」コマンドの後ろに貼り付けます。クリーンアップ/再構築、派生データの削除、プロジェクトへのファイルの追加/削除などの必要はありません。
この問題を自動的に修正するには、Build Script Phase
を追加します。 Go to 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"`
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秒かかり、プロジェクトを完全に再構築する必要がありません。
クリーンなプロジェクトの構築には時間がかかりすぎるので、キャッシュ内で破損しているファイルにアクセスできる人には短い方法があります。
フルバージョンなので、ファイルを見つけるのに問題はありません:
完全なキャッシュクリーンなしでエラーを修正する簡単な方法:
TWRAppDelegate
)私の場合、クリーンな再構築は行われなかったので、問題の解決方法を説明します。
-ファイルへの参照を削除しました(ファイルを削除しないでください)
-ファイルをプロジェクトに再度追加して実行します
手順1. [プロジェクト]> [ビルド設定]> [検索パス]に移動します。
ステップ2. [常にユーザーパスを検索する]を[はい]に設定します
ステップ3.プロジェクトをビルドします(警告が表示されますが、プロジェクトはビルドされます)。
手順4. [常にユーザーパスを検索する]を[いいえ]に戻し、再度ビルドして警告を削除します