ошибка ссылки __stack_chk_fail (использование библиотек с xcode) - PullRequest
1 голос
/ 04 февраля 2012

Я пытаюсь скомпилировать приложение C ++ в xcode, используя gcc 4.0 и 10.4u SDK.

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

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

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

-fno-stack-protector

... для других флагов Си, что я и сделал, но проблема сохраняется.Я выполнил очистку, перестроил и даже перезапустил XCode (потому что он иногда путался), но проблема сохраняется.

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

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

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

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

Приветствия.

1 Ответ

0 голосов
/ 04 февраля 2012

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

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

...