Обычно неразрешенный символ $ UNIX2003 означает, что вы ссылаетесь на более старый SDK, чем тот, на котором существующие объектные файлы были построены на .
Путь ко мне странно выглядит, и, пожалуйста, обратите внимание, что я только смутно знаком с разработкой Mac, а не с разработкой iPhone, это путь
/Developer/Platforms/iPhoneOS.platform/Developer/usr/include
, которого на самом деле нет в папке SDK. Возможно ли, что вы взяли символы мошенника, если они есть, оттуда? Кажется маловероятным, поскольку это происходит позже в командной строке, чем пути включения SDK.
Возможно, вместо символов ожидаемые версии _fwrite
и _strerror
, и поэтому gpg_error-gpg-error.o
и libgpg-error.a
в порядке, и это действительно проблема со связыванием, хотя опять-таки маловероятно, как у вас
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib
как опция -L. Я предполагаю, что где-то там есть библиотека libSystem?
Полагаю, первое, что нужно сделать, это выяснить, соответствует ли версия символа UNIX2003 тому, что вы ожидаете, или нет. Я думаю, что это так, но, как я уже сказал, я могу быть совершенно не прав. :)
Во-вторых, вы можете попробовать получить подробный вывод из ld
, чтобы увидеть, где он находит символы. Я уверен, что есть переменная окружения, которую вы можете установить, чтобы это произошло, но я не вижу ни одной из перечисленных на онлайновой справочной странице для ld
. ( Обновление : две переменные env LD_TRACE_ARCHIVES
и LD_TRACE_DYLIBS
, но, возможно, они дают то же самое, что и -t?).
Edit:
ОК, так что я был совершенно не прав насчет символов UNIX2003, которые были необходимыми. лол.
Когда вы создали libgpg-error, я думаю, что это создаст файл
SRC / .deps / gpg_error-GPG-error.Po
, который содержит зависимости заголовка (по крайней мере, в моей системе Linux). Это может дать подсказку о том, где он получил неправильный заголовок при сборке gpg_error-gpg-error.o.
Кстати, похоже, что скрипт конфигурации libgpg-error принимает опции -isysroot
и -arch
. Разве вы не можете использовать их вместо собственной версии скрипта настройки?
Edit2:
Ладно, давай еще раз попробуем :) Вот некоторые вещи, которые можно попробовать, начиная с чистой исходной папки:
- используйте -isysroot вместо --sysroot
- используйте -isysroot, а также --sysroot
- временно делает обычные системные заголовки недоступными, например, переименовывая папку. Надеюсь, что сборка не найдется, и он точно скажет, где находится.