man ld
对-z lazy
有以下几点看法
将函数调用解析推迟到调用函数时的动态链接器( ...tell ).延迟绑定是默认的。
另一方面,gcc --verbose main.c
将带有空main()
的main.c的-z now -z relro
传递给ld
$ gcc --verbose main.c
Using built-in specs.
COLLECT_GCC=gcc
[...]
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
[...]
COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/collect2 [...] -pie -z now -z relro [...]
我在Ubuntu18.04和19.04的默认安装gcc中看到了这一点。
因此,-z lazy
可能是ld的缺省值,但是gcc为什么将其更改为-z now -z relro
呢?
https://stackoverflow.com/questions/62527697
复制相似问题