其他-gcc指令
基础指令
最基本的GCC编译命令格式:
1 | gcc [选项] [源文件] [选项] [目标文件] |
- -o:将C源文件编译成可执行文件
- -g:生成时候带有debug信息
常用命令
1 | #32 位保护全关的编译命令 |
平台相关
- -m32:生成 32 位代码,需要系统安装 32 位开发库。
- -m64:生成 64 位代码(默认选项,64 位系统下)。
保护机制相关
- NX 保护(数据执行保护)
- -z execstack:关闭 NX 保护,使栈可执行(不安全)。
- -z noexecstack:开启 NX 保护(默认),使栈不可执行。
- Canary(栈保护)
- -fno-stack-protector:关闭栈保护。
- -fstack-protector:启用基础栈保护。
- -fstack-protector-all:启用全面栈保护(所有函数)。
- RELRO(地址重定向保护)
- -Wl,-z,relro:部分 RELRO,使 GOT 表只读。
- -Wl,-z,now:完全 RELRO,程序加载时解析所有符号。
- PIE(位置无关可执行文件)
- -fPIE -pie:生成 PIE 可执行文件,启用 ASLR 保护。
- -no-pie
- Fortify Source
- -D_FORTIFY_SOURCE=2:增强缓冲区溢出检测。
优化相关
- -O0:不进行优化(默认级别),调试友好。
- -O1:基础优化,在编译时间和代码性能间平衡。
- -O2:中级优化,比 - O1 更激进,推荐生产环境使用。
- -O3:高级优化,启用更多优化选项,可能增加编译时间。
- -Os:针对代码尺寸优化,适合嵌入式系统。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kanyo’s Blogs!








