2012-02-04 2 views
0

Я пытаюсь скомпилировать приложение C++ в xcode с помощью gcc 4.0 и 10.4u SDK.Ошибка ссылки __stack_chk_fail (с использованием libs с xcode)

Я получаю следующую ошибку компоновщика.

"_stack_chk_fail", ссылки из: _read_frame_ в libAudioDecoder.a (stream_decoder.o) _read_metadata_ в libAudioDecoder.a (stream_decoder.o) " _stack_chk_guard", ссылка из: ___ stack_chk_guard $ non_lazy_ptr в libAudioDecoder. а (stream_decoder.o) (возможно, вы имели в виду: ___ stack_chk_guard $ non_lazy_ptr) л.д.: символ (ы) не найдено

Другие темы помогают предположить, что все, что мне нужно сделать, это добавить ...

-fno-stack-protector

... в «Other C Flags», что я и сделал, но проблема сохраняется. Я выполнил очистку, перестройку и даже перезапустил XCode (потому что, как известно, иногда он путается), но проблема сохраняется.

Обратите внимание, что libAudioDecoder - это моя собственная библиотека, с которой я пытаюсь установить связь. stream_decoder.o отличается от библиотеки FLAC, к которой подключается libAudioDecoder.

По существу мой проект связан с libAudioDecoder, который связывается с libFlac, где libFlac также скомпилирован с использованием проекта xcode.

Для каждого из трех проектов xcode я использую gcc 4.0 и 10.4u SDK и имею «Другие флаги C» и «Другие флаги C++», установленные с -fno-stack-protector.

В настоящее время я все из идей, поэтому я бы очень хотел помочь в этом.

Cheers.

ответ

0

Символ _stack_chk_fail ссылается от символа _read_frame_ в вашей libAudioDecoder.a библиотеке, а не проект Xcode, из которого вы ссылаетесь против libAudioDecoder.a. Попробуйте вернуться и восстановить libAudioDecoder.a с флагом -fno-stack-protector?

Похоже, что вы собрали библиотеку, связанную с более новой версией libc, и теперь компилируете ее с более старой версией или некоторым другим несоответствием. Поиск «_stack_chk_fail» на StackOverflow приведет вас к тонне других советов.

+0

Все проекты, включая libAudioDecoder, используют флаг -fno-stack-protector. Я попытаюсь расширить поиск по некоторым темам, связанным с libc. Приветствия. – gmcc051

+0

Это очень поздний ответ на мой собственный пост (я решил эту проблему некоторое время назад), но я думаю, проблема в том, что у меня все еще есть эквивалентные файлы библиотеки внутри/user/local/lib. Я думал, что давно избавился от них, но, конечно же, они были там снова, и XCode всегда, кажется, отдавал им приоритет над тем, что я явно задал в вариантах сборки. – gmcc051

+0

Измените порядок аргументов '-L' на компоновщик, чтобы изменить приоритет. Каталоги ищут библиотеки в том порядке, в котором они перечислены, и затем обыскиваются общесистемные библиотеки. – greg

Смежные вопросы