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 启用

posted @ 2021-03-30 19:32  HiRose  阅读(65)  评论(0编辑  收藏  举报