【发布时间】:2016-03-18 08:15:15
【问题描述】:
我正在尝试在我的 OpenSUSE 13.2 上编译一个完整的 RELRO 程序。
使用以下命令
$ gcc a.c -z,relro,-z,now -o a
我收到了警告
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: warning: -z ,relro,-z,now ignored.
并且生成的二进制文件仍然是部分 RELRO。
我的 GCC 和 ld 版本
gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
GNU ld (GNU Binutils; openSUSE 13.2) 2.24.0.20140403-6.1
我的 gcc 怎么了……
【问题讨论】:
-
gcc命令没有-z选项,您的意思是例如-Wl,-z,relro? -
如果我用
-Wl,-z,relro,-z,now编译,我不会收到任何警告。但是输出二进制文件a仍然是部分RELRO。