关于undefined reference to `__stack_chk_fail'踩坑

有这样两个源文件,main.c文件会引用sub.c内的swap函数和变量,现在将他们编译后链接

image-20221101172922068

错误做法

image-20221101173121353

​ 这是因为编译源码到目标文件时,若没有加“-fno-stack-protector”,默认会调用函数“__stack_chk_fail”进行栈相关检查,且若是手动ld去链接,没有链接“__stack_chk_fail”所在库文件,链接时必然会报此项错误

解决方法 在编译时加上“-fno-stack-protector”,强制gcc不做栈检查
image-20221101173445460

reference gcc编译怎么解决undefined reference to `__stack_chk_fail'? - 知乎 (zhihu.com)

posted @ 2022-11-01 17:36  爱莉希雅  阅读(1796)  评论(0编辑  收藏  举报