链接错误__stack_chk_fail(使用libs与xcode)

问题描述:

我想在xcode中使用gcc 4.0和10.4u SDK编译一个C++应用程序。链接错误__stack_chk_fail(使用libs与xcode)

我收到以下链接错误。

_stack_chk_fail”,从引用:在libAudioDecoder.a(stream_decoder.o) _read_metadata_在libAudioDecoder.a(stream_decoder.o) “ _stack_chk_guard”,从引用 _read_frame_:在libAudioDecoder ___ stack_chk_guard $ non_lazy_ptr。一(stream_decoder.o) (也许你的意思是:___ stack_chk_guard $ non_lazy_ptr) LD:符号(S)没有发现

其他的帮助主题表明,所有我需要做的就是添加...

-fno-stack-protector

...到'其他C旗',这是我所做的,但问题仍然存在。我已经完成了清理,重建,甚至重新启动了XCode(因为有时会发生混淆),但问题仍然存在。

请注意,libAudioDecoder是我自己的库,我试图链接。 stream_decoder.o是libAudioDecoder链接到的FLAC库的一部分。

本质上,我的项目链接libAudioDecoder与libFlac链接,其中libFlac也已使用xcode项目进行编译。

对于每三个xcode项目,我使用gcc 4.0和10.4u SDK,并且使用-fno-stack-protector设置了“Other C Flags”和“Other C++ Flags”。

我现在都没有想法,所以将不胜感激一些帮助。

干杯。

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

这听起来像你可能已经编译链接到一个较新版本的libc库,现在正在编译与旧版本,或一些其他的不匹配。在*上搜索“_stack_chk_fail”将会引导您学习其他技巧。

+0

所有项目,包括libAudioDecoder都使用-fno-stack-protector标志。我会尽量扩大我对libc相关主题的搜索范围。干杯。 – gmcc051 2012-02-04 01:18:27

+0

这是对我自己的帖子的一个非常晚的回复(我前一段时间解决了这个问题),但我认为问题是因为我仍然在/ user/local/lib中有相同的库文件。我想很久以前我就摆脱了它们,但是肯定的是,它们再次出现在那里,XCode似乎总是优先于我在构建选项中明确设置的任何东西。 – gmcc051 2012-06-02 05:12:40

+0

更改链接器的'-L'参数顺序以改变优先级。目录按其列出的顺序搜索库,然后搜索系统范围的库。 – greg 2012-06-02 14:45:19