Android 4.4,未定义对_printf_chk的引用

Android 4.4,未定义对_printf_chk的引用,c,android-make,fortify-source,C,Android Make,Fortify Source,我正在将一些库从安卓4.3迁移到安卓4.4 以前在安卓4.3中编译的项目现在在使用安卓4.4源代码编译时出现以下错误 /home/vishallocal/TI/android/kitkat/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/include/bits/stdio2.h:105:错误:未定义对“u printf_chk”的引用 /home/vishallocal/TI/android/kitkat/pre

我正在将一些库从安卓4.3迁移到安卓4.4

以前在安卓4.3中编译的项目现在在使用安卓4.4源代码编译时出现以下错误

/home/vishallocal/TI/android/kitkat/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/include/bits/stdio2.h:105:错误:未定义对“u printf_chk”的引用 /home/vishallocal/TI/android/kitkat/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/include/bits/stdio2.h:105:错误:未定义对“u printf_chk”的引用 /home/vishallocal/TI/android/kitkat/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/include/bits/stdio2.h:105:错误:未定义对“u printf_chk”的引用 /home/vishallocal/TI/android/kitkat/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/include/bits/stdio2.h:105:错误:未定义对“u printf_chk”的引用 collect2:错误:ld返回了1个退出状态


解决此问题的任何指针?

通过在禁用FORTIFY\u源标志的情况下构建项目,修复了此问题

在Android.mk中添加了以下行
LOCAL\U CFLAGS+=-U\U FORTIFY\U SOURCE

我认为您的答案可以改进:

您可能需要以下内容:

ifeq ($(APP_OPTIM),debug)
  LOCAL_CFLAGS += -U_FORTIFY_SOURCE
endif
此外,如果使用
FORTIFY_SOURCE
-O0
,您可能会收到警告。忽略这个警告是安全的。您可以使用
-O1
或类似工具来调度警告

FORTIFY_SOURCE
适用于NDK R10及以上版本的应用程序。在此之前,
FORTIFY_SOURCE
仅用于系统库。我不知道如何防范“NDK R10”及以上版本。请参阅Android安全讨论邮件列表上的


此外,如果您在发布版本中禁用了
FORTIFY_SOURCE
,那么它应该会触发一个安全缺陷。

使用递归grep来确定它的使用和定义位置。是否在版本之间移动对象文件,而不是移动源文件?您在代码中使用非公共内部功能吗?我只移动了源代码。。。在谷歌上四处搜索,似乎是FORTIFY_CHECK导致printf调用了这个解决方案:通过禁用FORTIFY_源代码编译项目解决了这个问题
ifeq ($(APP_OPTIM),debug)
  LOCAL_CFLAGS += -U_FORTIFY_SOURCE
endif