调用AES加密函数AESEncrypt报undefined reference to putchar错误求助
AES加密
putchar未定义报错排查方案 - 优先检查AES依赖的三个子函数内部实现:
AddRoundKey、Round、FinalRound如果用到了assert宏、调试打印、字符处理类标准库函数,这类函数的底层实现往往会隐式调用putchar,哪怕你上层逻辑没有直接调用也会引入依赖。 - 确认编译运行环境:如果是嵌入式无操作系统场景,你使用的标准库默认开启了半主机模式,部分库分支逻辑会依赖
putchar做调试输出,未自行实现putchar桩函数的情况下就会触发链接报错。可以临时添加如下空实现验证是否是该问题:
int putchar(int c) { return c; }
- 排查内存越界风险:你当前给出的
AESEncrypt仅支持单16字节块加密,如果调用时paddedMessage+i、encryptedMessage+i的偏移计算错误导致栈越界,触发编译器栈保护的错误打印逻辑,也会引入putchar依赖。 - 检查链接选项:如果编译时开启了
-lgmon这类性能分析选项,性能分析的日志输出逻辑也会依赖IO类函数,关闭相关选项即可解决。
内容的提问来源于stack exchange,提问作者Aditya Karthik
相关产品推荐
相关产品推荐

