2019独角兽企业重金招聘Python工程师标准>>>

今天写了一个串口操作程序需要在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了。

转载于:https://my.oschina/xolsenberg/blog/813988

更多推荐

FORTIFY_SOURCE: memset: prevented write past end of buffer. Calling abort(). Abo