gcc小结
常用编译方式
例:# g++ main.cpp -o main_x64
采用 g++ [文件名] -o [可执行文件名]
的格式。
-g
添加gdb调试选项
-c
只编译不链接,只生成目标文件
-m32
编译32位程序
- 编译32位前安装相关依赖
# dpkg --add-architecture i386
# apt update
# apt install gcc-multilib g++-multilib
-lcrypto
链接crypto密码类库 # apt install libssl-dev
x64架构,编译前安装64位的依赖# apt install libssl-dev:i386
x86架构,编译前安装32位的依赖
安全编译选项:
-Wall
编译后显示所有警告
-fpermissive
将不一致代码的诊断从错误降级为警告
NX:
-z execstack
禁用
-z noexecstack
启用,默认是启用的
Canary:
-fno-stack-protector
禁用
-fstack-protector
启用
-fstack-protector-all
全启用
RELRO:
-z norelro
禁用
-z lazy
部分启用
-z now
全启用
PIE:
-no-pie
禁用
-pie
启用