Android 4.4系统,不确定参考__printf_chk

问题描述:

我把一些库在Android 4.3到Android 4.4Android 4.4系统,不确定参考__printf_chk

所使用的是Android 4.3,现在,给出以下的错误使用的是Android 4.4源

编译时,编译项目

/家/vishallocal/TI/android/kitkat/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/include/bits/stdio2.h:105:error:undefined reference to'__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:error:undefined参考'__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:error:undefined reference to'__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:error:undefined reference to'__printf_chk' collect2:error:ld returned 1退出状态

解决此问题的任何指针?

+0

使用递归grep来确定这是/被使用和定义的位置。您是否在版本之间移动目标文件,而不是移动已清理的源文件?您是否在代码中使用非公共内部功能? –

+0

我只是移动源...谷歌搜索,看起来像FORTIFY_CHECK导致printf调用这个 – vishalm

+0

找出一个解决方案:通过禁用FORTIFY_SOURCE编译项目解决了问题 – vishalm

通过建立与FORTIFY_SOURCE标志项目禁用

添加以下行修正了问题的Android.mk LOCAL_CFLAGS += -U_FORTIFY_SOURCE

我认为你的回答可以改进:

Fixed the issue by building the project with FORTIFY_SOURCE flag disabled 

Added following lines to Android.mk LOCAL_CFLAGS += -U_FORTIFY_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 Sources and Stack Protectors (was: Is Fortify Source working with NDK)

此外,如果您在发布版本中禁用FORTIFY_SOURCE,则应该触发安全缺陷。