Ошибка ссылки отсутствующей библиотеки при выполнении Product > Build For Archiving в Xcode 4
У меня есть приложение для iPhone, которое опирается на две статические библиотеки
При выполнении Project > Build For Running, а затем Project > Run ошибок нет, и приложение работает на моем iPhone, как и ожидалось.
При выполнении Project > Build For Archiving я получаю ошибку ссылки для одной из библиотек, но не для другой ld: library не найдена для -lConcordeLib
Когда я смотрю в файловой системе на созданные *.a файлы, я вижу:
Релиз-iphoneos/ConcordeLib.build/ Объекты нормальный / ARMv6/libConcordeLib.a
Релиз-iphoneos/ConcordeLib.build/ Объекты нормальный / ARMv7/libConcordeLib.a
Релиз-iphoneos/QSoptLib.build/ Объекты нормальный / ARMv6/libQSoptLib.a
Релиз-iphoneos/QSoptLib.build/ Объекты нормальный / ARMv7/libQSoptLib.a
Выпуск-iphoneos/libConcordeLib.a
Выпуск-iphoneos/libQSoptLib.a
в каталоге DerivedData для компиляции. Это похоже на файлы, сгенерированные при успешном выполнении Project > Build For Running, который генерирует те же файлы в Debug-iphoneos.
Я вычистил производные данные, остановил и перезапустил XCode и все еще получаю ту же ошибку.
1 ответ
Я внимательно посмотрел на команду ld и увидел, что она генерирует файлы в.../Build/Intermediates/NavConcorde.build/AdHoc-iphoneos/. Профиль AdHoc фактически больше не существует, поэтому неудивительно, что произошла ошибка. Я не понимаю, почему это проявилось как ошибка ссылки. Библиотеки в Debug и Release должны зависать от другой компиляции.
Перейдите в Product > Edit Scheme и настройте профиль для использования существующего профиля распространения, чтобы устранить ошибку ссылки.