今天写了一个串口操作程序需要在android开发板上运行测试, 运行的时候报了这个错:
FORTIFY_SOURCE: memset: prevented write past end of buffer. Calling abort().
Aborted
由于之前没有遇到过这种问题, 一下就蒙蔽了, 这是啥???
经过查找资料, FORTIFY_SOURCE 是RedHat的几位软件工程师设计的 gcc 为内存和字符串函数提供一种轻量级的缓冲区溢出保护机制, _FORTIFY_SOURCE 是gcc的一个编译选项。 就说这么多吧, 想深入了解就google。
解决方法:
在你自己项目的Andriod.mk 里面为gcc添加一个编译选项: LOCAL_CFLAGS += -D_FORTIFY_SOURCE=0,就可以了。
也有可能会报 FORTIFY_SOURCE 重复定义的问题, 原因是已经有别的Android.mk 定义这个编译选项了。
解决方法是:LOCAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 这样就ok了。