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++命令呢?如图

编译汇编链接加载

GCC编译器原理------交叉编译器制作和GCC组件及命令

GCC编译器命令

C程序编译链接gcc使用命令介绍