Linux下MinGW交叉编译C程序出现__strcpy_chk未定义引用错误
问题分析与解决
你遇到的undefined reference to '__strcpy_chk'错误,并非Linux版MinGW缺少该函数,而是交叉编译环境下的链接配置或编译选项问题:
__strcpy_chk是GCC安全增强特性(_FORTIFY_SOURCE)生成的安全版本字符串拷贝函数,属于Stack Smashing Protector(SSP)库的一部分。- 你的交叉编译环境中,libmingwex.a的代码引用了该函数,但编译/链接时未自动关联对应的SSP库。
解决方案
方案1:关闭安全增强编译选项
编译时添加-D_FORTIFY_SOURCE=0,让GCC生成普通的strcpy调用,避免依赖__strcpy_chk:
x86_64-w64-mingw32-gcc -D_FORTIFY_SOURCE=0 your_code.c -o your_program.exe
方案2:显式链接SSP库
编译时添加-lssp或-lssp_nonshared参数,手动关联SSP库:
x86_64-w64-mingw32-gcc your_code.c -o your_program.exe -lssp
方案3:检查并安装缺失的MinGW组件
确认Fedora系统中已安装MinGW的SSP相关包,比如:
sudo dnf install mingw64-libssp
内容的提问来源于stack exchange,提问作者MrKleeblatt
相关产品推荐
相关产品推荐

