Ответ 1
Похоже, что un-and reinstalling Xcode5 DP и инструменты командной строки OSX 10.9 решили проблему. Я предполагаю, что возникла проблема с обновлением из предыдущих версий.
Как и ранее упоминавшийся здесь, ___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. Это шаг ссылки.
Похоже, что un-and reinstalling Xcode5 DP и инструменты командной строки OSX 10.9 решили проблему. Я предполагаю, что возникла проблема с обновлением из предыдущих версий.
stret
Яблоко говорит для "возвращает структуру". ___sincos_stret
- это оптимизация LLVM - если вы пишете код, который вызывает sin(n)
, а затем cos(n)
и использует оба результата, тогда компилятор сделает один вызов метода, возвращающего структуру, и получит структуру, в которой есть обе вещи. Это быстрее работать как сразу, а не отдельно, если операнд один и тот же.
В поверхностном просмотре я не вижу 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 или сделать эквивалент в вашем файле.
Вы хотите -mmacosx-version-min=10.8
(или независимо от вашей целевой версии ОС).
Откройте следующий файл в текстовом редакторе /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