Как ранее указано Вот, ___sincos_stret
не может быть найден при компиляции проекта, который использует этот символ с использованием инструментов командной строки Xcode5.
В упомянутой выше теме опубликовано решение для целей IOS (прохождение -miphoneos-version-min=5.0
компилятору), есть ли решение для рабочего стола (x64
) цели?
Это, например, происходит для меня при попытке скомпилировать polycode.
Изменить 2:
Как ни странно, после компиляции библиотек, упомянутых в предыдущей ошибке, вручную, ошибка теперь находится в lto.o, который является внутренним заголовком llvm …
undef: ___sincos_stret
Undefined symbols for architecture x86_64:
"___sincos_stret", referenced from:
_mdct_init in lto.o
_dradfg in lto.o
Я использую OSX 10.9 DP с Xcode 5. Это шаг ссылки.
stret
Яблоко говорят за «возвращает структуру». ___sincos_stret
такое оптимизация LLVM — если вы пишете код, который вызывает sin(n)
а потом cos(n)
и использует оба результата, тогда компилятор сделает один вызов метода sincos, возвращающего структуру, получив структуру с обоими объектами. Быстрее обрабатывать оба сразу, а не по отдельности, если операнд один и тот же.
При поверхностном просмотре я не вижу sin
или же cos
в initInterTab2D
но я ожидаю что-то встраивается.
Пока ковыряясь я попробовал:
cd /Applications/Xcode.app/Contents/Developer/Platforms
grep -lr ___sincos_stret *
Через это и используя nm
по вероятным результатам я нашел ___sincos_stret
функция доступна как в iOS начиная с 7.0, так и в OS X начиная с 10.9 как часть их libsystem_m.dylib
s. Например. если ваш Xcode установлен в месте по умолчанию, попробуйте:
nm /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib/system/libsystem_m.dylib | grep sincos
И / или:
nm /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib/system/libsystem_m.dylib | grep sincos
Вы увидите символ в любом из них. Таким образом, правильным решением было бы установить более старую цель развертывания в XCode или сделать эквивалент в вашем make-файле.
Ты хочешь -mmacosx-version-min=10.8
(или какой бы ни была ваша целевая версия ОС).
Похоже, что удаление и повторная установка Xcode5 DP и инструментов командной строки OSX 10.9 решили проблему. Я думаю, что была проблема с обновлением от предыдущих версий.
Откройте следующий файл в текстовом редакторе
/opt/local/etc/macports/macports.conf
и добавить туда такие строки, как
# MACOSX_DEPLOYMENT_TARGET - osx version to be compatible with earlier OSX version.
macosx_deployment_target 10.8
MACOSX_DEPLOYMENT_TARGET 10.8