Я разрабатываю приложение в 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)
Кто-нибудь знает в чем дело?
TWRAppDelegate.o
файл поврежденным или нулевым размером.Ответы:
Кража ответа @martin-baulig:
Попробуйте полную перестройку / очистку. Возможно, предыдущая сборка была аварийно прервана, в результате чего файл TWRAppDelegate.o поврежден или имеет нулевой размер.
источник
Обычно я добавляю пробел (может быть любым символом) к рассматриваемому файлу, удаляю его и затем сохраняю. Легче и быстрее, чем чистая сборка.
источник
Для автоматического исправления этой проблемы
Build Script Phase
можно добавить. Перейти к Xcode -> Ваш проект -> Ваша цель -> Фазы сборки -> + -> Новая фаза запуска сценарияПереименуйте его в
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
Этот сценарий проверяет объектные файлы с нулевым размером и удаляет их, чтобы на следующем шаге компиляция завершилась успешно.
Вам нужно добавить этот скрипт для каждой цели приложения, если у вас их много.
Этот сценарий запускается примерно за 0,1 секунды и избавляет вас от полной перестройки проекта.
источник
rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData
источник
просто удалите этот файл, запустив cmd в приложении терминала:
источник
Быстрый способ исправить ошибку без полной очистки кеша:
TWRAppDelegate
)источник
Поскольку создание чистого проекта может занять слишком много времени, существует более короткий путь для тех, у кого есть доступ к файлу, поврежденному в кеше:
Полная версия, чтобы у вас не было проблем с поиском файла:
источник
Вы можете просто удалить файл TWRAppDelegate.o и продолжить сборку. Скопируйте полный путь, указанный в сообщении об ошибке, и вставьте его после команды rm в свой терминал. Нет необходимости очищать / перестраивать, удалять производные данные, добавлять / удалять файл из проекта и т. Д.
источник
Шаг 1. Перейдите в: Проект> Параметры сборки> Пути поиска.
Шаг 2. Установите для параметра «Всегда искать пути пользователя» значение «Да».
Шаг 3. Создайте проект (вы получите предупреждение, но проект будет построен).
Шаг 4. Установите для параметра «Всегда искать пути пользователя» значение «Нет» и повторите построение, чтобы устранить предупреждение.
источник
В моем случае чистой перестройки не было, поэтому я объясню, как я решил проблему:
- Удалена ссылка на файл (не удаляйте файл)
- Снова добавьте файл в проект и запустите
источник