Подтвердить что ты не робот

Ошибка компоновщика 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)

Кто-нибудь знает, что неправильно?

4b9b3361

Ответ 1

Кража @martin-baulig ответ:

Попробуйте полностью перестроить/очистить. Возможно, предыдущая сборка была аномально прервана, оставив файл TWRAppDelegate.o поврежденным или нулевым.

Ответ 2

Обычно я добавляю в этот файл пробел (может быть любой символ), удалять его и затем сохранять. Легче и быстрее, чем чистая сборка.

Ответ 3

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

Ответ 4

Поскольку создание чистого проекта может занять слишком много времени, тем меньше возможностей для тех, у кого есть доступ к файлу, который поврежден в кеше:

  • Удалить файл (Удалить ссылку)
  • Проект сборки
  • Загрузите файл
  • Проект сборки

Полная версия, поэтому вам не трудно найти файл:

  • Найти файл в навигаторе проектов Xcode
  • Щелкните правой кнопкой мыши файл и нажмите "show in finder" (открывает поисковик в том месте, где находится файл)
  • Выберите файл в Xcode и нажмите Backspace, затем нажмите "Удалить ссылку"
  • Построить проект (он потерпит неудачу, но дождитесь его завершения)
  • Загрузите файл, перетащив его из поискового устройства в то же место, где вы только что удалили его.
  • Проект сборки (должен работать сейчас)

Ответ 5

Вы можете просто удалить файл TWRAppDelegate.o и продолжить сборку. Скопируйте полный путь, указанный в сообщении об ошибке, и вставьте его за команду "rm" в вашем терминале. Нет необходимости чистить/перестраивать, удалять производные данные, добавлять/удалять файл из проекта и т.д.

Ответ 6

просто удалите этот файл, запустив cmd в своем приложении терминала:

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

Ответ 7

Шаг 1. Перейдите в: Проект > Настройки сборки > Пути поиска

Шаг 2. Установите "Всегда искать пользовательские пути" на "Да"

Шаг 3. Постройте проект (вы получите предупреждение, но проект будет построен.)

Шаг 4. Установите "Всегда искать пользовательские пути" обратно в "Нет" и снова создайте, чтобы исключить предупреждение

Ответ 8

Чистая перестройка не была в моем случае, поэтому я объясню, как я решил проблему:
- Удалена ссылка на файл (не удаляйте файл)
- снова добавьте файл в проект и запустите

Ответ 9

Чтобы автоматически решить эту проблему, можно добавить Build Script Phase. Перейти к Xcode → Ваш проект → Ваша цель → Фазы сборки → + → Фаза нового запуска скрипта

Переименуйте его в Xcode Link Fix и переместите его выше фазы Compile Sources. Вставьте это в тело скрипта:

# Legacy build system
dirname "$LD_DEPENDENCY_INFO_FILE" | xargs -I {} find {} -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 секунды для запуска и спасает вас от полной перестройки проекта.