gcc编译错误undefined reference to `__stack_chk_fail'

qq459673705 2010-10-31 10:16:32
在网上查了资料,说是在编译时,在CFLAGS后面加上-fno-stack-protector,可是加上之后依然显示undefined reference to `__stack_chk_fail'
平台是ubuntu gcc版本是4.4版本
...全文
8493 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iris_Zhou 2013-06-02
  • 打赏
  • 举报
回复
引用 10 楼 lampqiu 的回复:
LZ 还不结帖么,都一年了。从你解决问题的方式来看应该是这样一个情况: 其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail'”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清除,所以貌似没有效果。后来你发现少了一个.h文件,将其改动,那么依赖就得到更新,Makefile就产生了效果,你自认为解决了问题,其实原因找错了。
膜拜,好牛逼,原来要make clean一下才行
weiweishuo 2013-05-28
  • 打赏
  • 举报
回复
是学到了于渊那本书的第9章,磁盘驱动那一部分吧,,print_identify_info函数里的char s[64]可能被gcc判别为做溢出攻击的恶意代码,把它挪到全局变量也可以解决(虽然不太雅观)。 我启用了-fno-stack-protector,ld又弹出来一句ld:-f may not be use without -shared,我加上了-shared,倒是链接成功,但链接出来的内核完全不能运行了。
yanhui2012 2013-04-11
  • 打赏
  • 举报
回复
你们把我的问题解决了,我也在看于渊的书,在第5章,编译h的时候出现这个错误,错误处在disp_int这个函数,在lib\klib.c中,在CFLAGS后面加上了-fno-stack-protector之后就好了,不用清楚以前的编译结果,因为make image = make final building , final= all clean = realclean everything.所以已经自动清除了.
Future_ShotBig 2013-03-25
  • 打赏
  • 举报
回复
我也是看于渊的书碰到这个问题,在CFLAGS后面加上了-fno-stack-protector之后,执行make image(之前并没有清除以前的编译结果,也没有以任何方式改变文件之间的依赖关系),问题就解决了
chen87yes 2012-10-15
  • 打赏
  • 举报
回复
各位高手,
我的makefile 文件里面有这行
YOGA_GLOBAL_CFLAGS = -pipe -fno-exceptions -ffunction-sections $(WARN_FLAGS)

我不明白 【 在CFLAGS后面加上了-fno-stack-protector】 是什么意思

我发现我系统里面的 stdio.h文件 内容很少,没有fread(),fopen,FILE, 我加上fread(),fopen,FILE后,编译就出现
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_base'
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_size'
hebeiashuai 2012-10-09
  • 打赏
  • 举报
回复
为什么我生成的Makefile里边没有CFLAGS呢
honpey 2012-10-02
  • 打赏
  • 举报
回复
10楼,神
kevin6132919 2012-02-11
  • 打赏
  • 举报
回复
-fno-stack-protector正解
hw19886200 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lampqiu 的回复:]

LZ 还不结帖么,都一年了。从你解决问题的方式来看应该是这样一个情况:
其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail '”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清……
[/Quote]兄弟 你太生猛了 看你的回复我把问题解决了!!!
slayerslasher 2011-08-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lampqiu 的回复:]
LZ 还不结帖么,都一年了。从你解决问题的方式来看应该是这样一个情况:
其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail '”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清除……
[/Quote]

哥们,你太厉害了,看你的贴我把问题解决了。确实厉害啊
  • 打赏
  • 举报
回复 12
LZ 还不结帖么,都一年了。从你解决问题的方式来看应该是这样一个情况:
其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail'”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清除,所以貌似没有效果。后来你发现少了一个.h文件,将其改动,那么依赖就得到更新,Makefile就产生了效果,你自认为解决了问题,其实原因找错了。

qingrong1989 2011-06-28
  • 打赏
  • 举报
回复
解决了,是忘记了将一个public加入.h文件???????能不能说明白点啊,谢谢啦………………
chenxiancool 2011-04-06
  • 打赏
  • 举报
回复
估计是版本低吧,我也出现了LZ的情况,但加上-fno-stack-protector就OK了。
luoqinglin08 2011-03-22
  • 打赏
  • 举报
回复
这两天也遇到这个问题:可以在makefile的CFLAGS中添加-fno-stack-protector一项。
benet_1988 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq459673705 的回复:]

解决了,是忘记了将一个public加入.h文件,同时可能也有编译排序问题
多谢了!
[/Quote]

是在看于渊的书吧!最近我也遇到了同样的问题.....一直未解决
是如何解决的?
谢谢!!!
manytao 2010-10-31
  • 打赏
  • 举报
回复
敢问lz你是如何编译的? 在终端上rpm -q gcc glibc 看一看版本。 另外 也可能是你编译的顺序有问题。比如说有文件相互调用,但是低版本的gcc是不能自动识别的。 建议lz升级一下gcc
skyworth98 2010-10-31
  • 打赏
  • 举报
回复
貌似某些库没有链接上?
qq459673705 2010-10-31
  • 打赏
  • 举报
回复
解决了,是忘记了将一个public加入.h文件,同时可能也有编译排序问题
多谢了!
dingshaofengbinbin 2010-10-31
  • 打赏
  • 举报
回复
没见过,等高手
qq459673705 2010-10-31
  • 打赏
  • 举报
回复
还是不行啊gcc是最新的库也没问题,不会是最新版gcc不够稳定吧?

69,375

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧