mingw-gcc中GCC的relro、now标志的替代选项是什么?
MinGW-GCC中RELRO与NOW编译标志的替代选项解答
RELRO(只读重定位)相关
MinGW-GCC无需特殊替代选项,直接支持原生GCC的-Wl,-z,relro链接标志。
- 注意:Windows PE格式和Linux ELF架构不同,RELRO的实际效果有差异——PE没有ELF那样的GOT/PLT完全只读机制,但该标志仍会将部分重定位段设为只读,达到提升程序安全性的目的。
- 该标志在MinGW-w64环境下同样适用。
NOW(立即绑定)相关
对应原生GCC的-Wl,-z,now,MinGW-GCC同样直接支持这个链接标志:
- 作用是让程序在加载阶段就完成所有动态符号的绑定,而非延迟到首次调用时,这和Linux下NOW的行为逻辑一致,但受PE加载机制限制,实际执行细节有细微差别。
- 若使用极旧版本的MinGW遇到该标志不支持的情况,可尝试
-static-libgcc或-static进行静态链接,但这并非直接替代方案,仅作为备选实现方式,优先推荐使用标准的-Wl,-z,now。
内容的提问来源于stack exchange,提问作者Prq
相关产品推荐
相关产品推荐

