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退出状态
解决此问题的任何指针?
通过建立与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
,则应该触发安全缺陷。
使用递归grep来确定这是/被使用和定义的位置。您是否在版本之间移动目标文件,而不是移动已清理的源文件?您是否在代码中使用非公共内部功能? –
我只是移动源...谷歌搜索,看起来像FORTIFY_CHECK导致printf调用这个 – vishalm
找出一个解决方案:通过禁用FORTIFY_SOURCE编译项目解决了问题 – vishalm