链接错误__stack_chk_fail(使用带有xcode的libs)

时间:2012-02-04 00:36:14

标签: c++ xcode linker-errors

我正在尝试使用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'。

此刻我完全没有想法,所以会对此有所帮助。

干杯。

1 个答案:

答案 0 :(得分:0)

符号_stack_chk_fail是从_read_frame_库中的符号libAudioDecoder.a引用的,而不是从libAudioDecoder.a链接的Xcode项目。尝试返回并使用libAudioDecoder.a标志重建-fno-stack-protector

听起来您可能已经编译了链接到较新版本的libc的库,现在正在使用旧版本进行编译,或者其他一些不匹配的版本。在StackOverflow上搜索“_stack_chk_fail”会引导您获得大量其他提示。