web-dev-qa-db-ja.com

Xcodeリンカーエラー:アーキテクチャx86_64にはファイルが小さすぎます

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)

誰が間違っているか知っていますか?

69
tbodt

@ martin-bauligの答えを盗む:

完全な再構築/クリーニングを試してください。以前のビルドが異常終了し、TWRAppDelegate.oファイルが破損またはゼロサイズのままになる可能性があります。

152
Peter K.

私は通常、問題のファイルにスペース(そのことについては任意の文字)を追加し、削除してから保存します。クリーンビルドよりも簡単かつ迅速。

9
grassyburrito

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

3
yeyimilk

ターミナルアプリでcmdを実行してこのファイルを削除するだけです。

rm /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o
2
haithngn

TWRAppDelegate.oファイルを削除して、ビルドを続行できます。エラーメッセージに記載されているフルパスをコピーし、ターミナルの「rm」コマンドの後ろに貼り付けます。クリーンアップ/再構築、派生データの削除、プロジェクトへのファイルの追加/削除などの必要はありません。

1
Jason Pepas

この問題を自動的に修正するには、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秒かかり、プロジェクトを完全に再構築する必要がありません。

1

クリーンなプロジェクトの構築には時間がかかりすぎるので、キャッシュ内で破損しているファイルにアクセスできる人には短い方法があります。

  • ファイルを削除する(参照を削除する)
  • ビルドプロジェクト
  • ファイルを再挿入
  • ビルドプロジェクト

フルバージョンなので、ファイルを見つけるのに問題はありません:

  • Xcodeプロジェクトナビゲーターでファイルを見つける
  • ファイルを右クリックして「Finderで表示」を押します(ファイルがある場所でFinderを開きます)
  • Xcodeでファイルを選択してバックスペースを押し、[参照を削除]をクリックします
  • プロジェクトをビルドします(失敗しますが、完了するのを待ちます)
  • Finderから削除した場所にドラッグしてファイルを再挿入します
  • プロジェクトのビルド(今すぐ動作するはずです)
1
Matic Oblak

完全なキャッシュクリーンなしでエラーを修正する簡単な方法:

  1. エラーで説明されているファイルを開く(この質問の場合TWRAppDelegate
  2. cmd + A
  3. cmd + X
  4. 再構築-失敗
  5. cmd + V
  6. 再構築-成功
0
Vadim Akhmerov

私の場合、クリーンな再構築は行われなかったので、問題の解決方法を説明します。
-ファイルへの参照を削除しました(ファイルを削除しないでください)
-ファイルをプロジェクトに再度追加して実行します

0
David Santiago

手順1. [プロジェクト]> [ビルド設定]> [検索パス]に移動します。

ステップ2. [常にユーザーパスを検索する]を[はい]に設定します

ステップ3.プロジェクトをビルドします(警告が表示されますが、プロジェクトはビルドされます)。

手順4. [常にユーザーパスを検索する]を[いいえ]に戻し、再度ビルドして警告を削除します

0
tland