我正在尝试使用gcc 4.0和10.4u SDK在xcode中编译C ++应用程序。
我收到以下链接器错误。
“ _stack_chk_fail”,引自: libAudioDecoder.a中的_read_frame_(stream_decoder.o) libAudioDecoder.a中的_read_metadata_(stream_decoder.o) “ _stack_chk_guard”,引自: ___ stack_chk_guard libAudioDecoder.a中的$ non_lazy_ptr(stream_decoder.o) (也许你的意思是:___ stack_chk_guard $ non_lazy_ptr) ld:未找到符号
其他帮助主题建议我需要做的就是添加...
-fno堆叠保护器
...到'其他C旗',这就是我所做的,但问题仍然存在。我已经完成了清理,重建甚至重新启动XCode(因为它有时会让人感到困惑),但问题仍然存在。
请注意,libAudioDecoder是我自己想要链接的库。 stream_decoder.o是libAudioDecoder链接到的FLAC库的一部分。
基本上我的项目与libAudioDecoder链接,libAudioDecoder与libFlac链接,其中libFlac也使用xcode项目进行编译。
对于每三个xcode项目,我使用gcc 4.0和10.4u SDK并使用-fno-stack-protector设置'Other C Flags'和'Other C ++ Flags'。
此刻我完全没有想法,所以会对此有所帮助。
干杯。
答案 0 :(得分:0)
符号_stack_chk_fail
是从_read_frame_
库中的符号libAudioDecoder.a
引用的,而不是从libAudioDecoder.a
链接的Xcode项目。尝试返回并使用libAudioDecoder.a
标志重建-fno-stack-protector
?
听起来您可能已经编译了链接到较新版本的libc
的库,现在正在使用旧版本进行编译,或者其他一些不匹配的版本。在StackOverflow上搜索“_stack_chk_fail
”会引导您获得大量其他提示。