Просто обновился до 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
.
Установка цели развертывания на значения по умолчанию для компилятора решила проблему. Больше ничего не меняй.
Компилятор обычно использует crt1.o
в сочетании с crt [i / n] .o и crt [begin / end] .o для поддержки конструкторов и деструкторов (функций, вызываемых до и после main и exit).
Эта ошибка может быть вызвана отсутствием файла библиотеки для конкретной цели развертывания.
Сначала проведите небольшое расследование, например:
Перечислите все цели развертывания:
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
Как видно из примера выше, crt1.10.6.o
отсутствует для MacOSX10.5.
Вы можете решить эту проблему, создав ссылку на отсутствующий файл, указывающий на другую среду, или можете изменить цель развертывания. Например.
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
Потратил несколько часов на это ...
Что интересно, для меня проблема была только в Simulator-Debug. Он не жаловался на Simulator-Release или Device Debug / Release!
в любом случае, изменение цели развертывания на 10,5 решило эту проблему для меня !!
Эта проблема решена путем установки целевого значения развертывания Mac OS X на 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.
У меня была такая же проблема в Makefile Fortran. После компилятора (для OSX 10.5) добавлена следующая опция:
-L / Разработчик / SDK / MacOSX10.5.sdk / usr / lib
e.g.,
g77 -L / Разработчик / SDK / MacOSX10.5.sdk / usr / lib
Теперь компилятор найдет нужную вам библиотеку!
Add the following to ~/.profile (for 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
Учитывая ограниченный сценарий Кирандана (Snow Leopard, Xcode 3.2.1, iphone, ошибка пути к библиотеке), ответ Стефана (выше) сработал для меня, за исключением того, что мое исключение было с 10.5 (-lcrt1.10.5.o).
В другом месте я видел ответ Габора Челле (автора reMail), и он исправил эту конкретную проблему, используя символическую ссылку (кстати, кто-то ссылался на эту страницу), но он отметил, что это не лучший способ.