编译和安装都很顺利,可当运行的时候Perl就报出__stack_chk_fail的错误。
找了很多资料,后来发现有人也遇见过同样的问题(原文参考),究其原因是因为gcc编译器的版本太低。
我查看了目标机器上的gcc 版本 3.4.6,而CentOS5.3上的gcc 版本 4.1.2 2007062,所以才会出现上述的错误。
解决方法按参考文章所述:
编辑/usr/include/sys/cdefs.h (系统不同可能路径也不同)文件,在最后一个#endif前面加上如下代码:
extern void __attribute__((noreturn))
__stack_chk_fail(void);
extern void __attribute__ ((noreturn))
__stack_chk_fail_local(void);
然后在libfetion的include中选任意一个.h结尾的文件加入以下2段代码
void __attribute__((noreturn))
__stack_chk_fail(void)
{
;
}
void
__attribute__((noreturn))
__stack_chk_fail_local(void)
{
;
}
make的时候会报如下错误,无视掉好了:
login.c: In function `__stack_chk_fail':
login.c:114: warning: `noreturn'
function does return
login.c: In function
`__stack_chk_fail_local':
login.c:120: warning: `noreturn' function does
return