Просто обновлен до Snow Leopard, установлен Xcode 3.2, затем установлен iPhone SDK 3 для SL.
В проекте теперь я получаю следующую ошибку при сборке:
ld
: библиотека не найдена для-lcrt1.10.6.o
Я искал по сети, но ничего полезного не найдено.
Просто обновлен до Snow Leopard, установлен Xcode 3.2, затем установлен iPhone SDK 3 для SL.
В проекте теперь я получаю следующую ошибку при сборке:
ld
: библиотека не найдена для-lcrt1.10.6.o
Я искал по сети, но ничего полезного не найдено.
Изменить настройки проекта → На вкладке сборки → Для цели развертывания Mac OS X измените ее на 10,5 для XCode 3 (не 10.6, даже если на 10.6), и посмотрите, помогает ли это.
Для XCode 4 вам нужно установить его на 10.6
P.S. Убедитесь, что вы установили это для всех целей, а не только для выпуска или отладки. (если вы этого не сделали, один потерпит неудачу, другой не будет)
Добавьте следующее в ~/.profile(для Mac OS X 10.5):
export C_INCLUDE_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/include
export LIBRARY_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/lib
Мне удалось исправить эту проблему, добавив следующее в мой Makefile:
CFLAGS="$(OTHER_CFLAGS) -mmacosx-version-min=10.5"
LDFLAGS="$(OTHER_LDFLAGS) -mmacosx-version-min=10.5"
Якобы, это требуется только при построении вне Xcode. Эта проблема разочаровала меня достаточно долго, и я подумал, что было бы полезно поделиться своим опытом здесь.
Похоже, вы собираете библиотеки из /usr/lib, что совершенно неуместно для iPhone SDK. Я бы предположил, что вы изменили свои настройки сборки, чтобы добавить /usr/lib в пути поиска библиотеки. В первую очередь это должно быть совершенно ненужным, поскольку /usr/lib находится в стандартных путях поиска компилятора, но если вам нужно иметь модифицированный путь поиска, как это, убедитесь, что вместо него используется $(SDKROOT)/usr/lib
.
Настройка цели развертывания для параметров по умолчанию для компилятора решила проблему. Не изменяйте ничего другого.
Потрачено несколько часов на этом...
Интересно, для меня проблема была только для Simulator-Debug. Он не жаловался на Simulator-Release или Device Debug/Release!
В любом случае, изменение цели развертывания до 10.5 решило это для меня!
Эта проблема решена, установив для Mac OS X Deployment Target значение 10.5 и после этого вернется к компилятору по умолчанию:)
У меня была эта проблема, когда я использовал Xcode 4 на одной машине и Xcode 3.2.6 на другой. Предполагается, что две версии могут обмениваться файлами .xcodeproj между ними, но я обнаружил, что в файле project.pbxproj(внутри каталога .xcodeproj) все еще есть пара мест, которые читаются:
MACOSX_DEPLOYMENT_TARGET = 10.6;
Я ушел из Xcode и пошел и изменил три события:
MACOSX_DEPLOYMENT_TARGET = 10.5;
После повторного открытия проекта я смогу снова построить. Уф!
У меня было такое же сообщение об ошибке, ни один из вышеперечисленных решений не работал у меня. Я разрешил его, удалив файлы *.pbxuser и *.mode1v3 внутри файла xcodeproj.
У меня была та же проблема в файле Fortran Makefile. Добавлена следующая опция после компилятора (для OSX 10.5):
-L/Разработчик/SDKs/MacOSX10.5.sdk/USR/Библиотека
например,
g77 -L/Developer/SDK/MacOSX10.5.sdk/usr/lib
Теперь компилятор найдет нужную вам библиотеку!
Компилятор обычно использует crt1.o
в сочетании с crt [i/n].o и crt [begin/end].o для поддержки конструкторов и деструкторов (функции, называемые до и после main и выхода).
Эта ошибка может быть вызвана этим отсутствующим файлом библиотеки для конкретной цели развертывания.
Сначала выполните некоторые исследования, например:
Перечислите все цели развертывания:
ls -la /Developer/SDKs
Найдите, какие библиотеки crt1
у вас есть, для какой среды
find /Developer/SDKs -name crt1\*
Вы можете увидеть что-то вроде:
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.10.5.o
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.o
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.5.o
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.6.o
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.o
Как вы можете видеть в приведенном выше примере, для MacOSX10.5 отсутствует crt1.10.6.o
.
Это можно решить, создав ссылку на отсутствующий файл, указывающий на другую среду, или вы можете изменить цель развертывания. Например.
ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.6.o /Developer/SDKs/MacOSX10.5.sdk/usr/lib/
Другая причина, по которой он отсутствует, заключается в том, что в вашей системе может быть установлен другой gcc
. Например:.
which gcc
xcrun -find gcc
brew list | grep gcc; brew list gcc47
Поэтому, когда вы компилируете с использованием make, вы можете указать правильный компилятор по переменной CC. Например.
CC=/path/to/gcc-3.4 make
То, что вы также можете попробовать, это указать правильную целевую переменную среды развертывания для gcc, например:
export MACOSX_DEPLOYMENT_TARGET=10.5
Если это работает, вы можете добавить этот путь к вашему профилю оболочки (~/.profile
).
Например.
export C_INCLUDE_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/include
export LIBRARY_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/lib
Или путем временного экспорта их.
Создайте пример файла conftest.c
со следующим кодом:
#ifdef __GNUC__
yes;
#endif
И попробуйте скомпилировать его с помощью:
gcc conftest.c
cc conftest.c
cc conftest.cc conftest.c
Добавьте в файл ~/.profile следующее (для Mac OS X 10.5):export C_INCLUDE_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/include export LIBRARY_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/lib
Учитывая сценарий с ограниченной вероятностью Kirandan (Snow Leopard, Xcode 3.2.1, iphone, ошибка пути к библиотеке), ответ Stefan (выше) работал на меня, кроме моего исключения было 10.5 (-lcrt1.10.5.o).
В другом месте я видел ответ Габора Целела (автора переиздания), и он исправил эту конкретную проблему, используя символическую ссылку (кстати, кто-то ссылался на эту страницу), но он отметил, что это было не самое лучшее путь.