Gcc编译命令
Posted da1sy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gcc编译命令相关的知识,希望对你有一定的参考价值。
完善gcc编译环境
Apt-get install gcc-multilib
? ?
-static | 静态编译 |
-z execstack | 关闭栈不可执行保护 |
-m32 | 生成32位程序 |
-fno-stack-protector | 不开启堆栈溢出保护,即不生成canary |
-mpreferred-stack-boundary=4 | 影响二进制文件中生成的代码,将堆栈指针对齐在四字节的边界上 |
-no-pie | 关闭pie以避免基地址被打乱 |
还需要系统开启ASLR才会真正打乱基地址
/proc/sys/kernel/randomize_va_space
0 | 关闭ASLR,没有随机化 | 堆栈.so的基地址每次相同 |
1 | 普通ASLR | 栈基地址、mmap基地址、.so加载基地址都被随机化,但是堆地址没有被随机化 |
2 | 增强ASLR | 在1的基础上增加了堆地址随机化 |
? ?
? ?
使用checksec工具检查编译出的文件
以上是关于Gcc编译命令的主要内容,如果未能解决你的问题,请参考以下文章
“linux”怎么编译c的源程序的?“gcc”编译命令是啥?
win10我安装了gcc编译器可以运行gcc命令,为啥不能使用g++命令呢?如图