我一直在添加一些“编译标志”来激活我的二进制文件中的安全措施。然后我使用checksec工具检查这些措施是否已实施。除了FORTIFY之外,我已经能够激活所有这些。
我不断得到
FORTIFY = 否,强化 = 0,强化 = 4
即使在使用-D_FORTIFY_SOURCE=2编译后仍作为checksec的输出
我不得不说我对许多二进制文件使用了一个通用的CMakeLists.txt ,并且我在全局add_compile_options部分添加了-D_FORTIFY_SOURCE=2 。
对于所有其他生成的二进制文件,该宏具有预期的行为,即其他二进制文件得到“强化”。
我正在使用gcc 9.3.0,我的应用程序是用c++17编写的,我使用-O2进行编译。
有人知道为什么我的二进制文件没有得到强化吗?
提前致谢。