___sincos_stret неопределенный символ при связывании

Как ранее указано Вот, ___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. Это шаг ссылки.

14

Решение

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.dylibs. Например. если ваш 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-файле.

13

Другие решения

Ты хочешь -mmacosx-version-min=10.8 (или какой бы ни была ваша целевая версия ОС).

6

Похоже, что удаление и повторная установка Xcode5 DP и инструментов командной строки OSX 10.9 решили проблему. Я думаю, что была проблема с обновлением от предыдущих версий.

3

Откройте следующий файл в текстовом редакторе
/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
2
По вопросам рекламы [email protected]