跳至主要內容

gcc g++ rcc

LincZero大约 2 分钟

gcc g++ rcc

目录

gcc g++ rcc

gcc与g++

详见《深入理解计算机系统》

Linux编译器和反汇编器的使用

gcc和g++都可以编译C/C++,但教程上一般是gcc对C,gcc汇编,g++对C++,具体的这里不再深入

两者的用法几乎完全一致

linux指令(gccobjdump操作生成文件文件补充
gcc -Og -S main.c仅编译汇编文件main.s可以文本方式打开阅读汇编代码
gcc -Og -S -masm=intel main.c仅编译汇编文件main.s还可以生成Intel格式的代码(没区别?)
gcc -Og -c main.c编译+汇编二进制文件main.osudo ./main.o可运行该文件
gcc -Og -o prog main.c hello.c编译+汇编+链接二进制文件progsudo ./prog可运行该文件
gcc main.c编译+汇编+链接二进制文件a.outsudo ./a.out可运行该文件
————————————————————————
g++ -S main.cpp仅编译汇编文件main.s可以文本方式打开阅读汇编代码
g++ -c main.cpp编译+汇编二进制文件main.osudo ./main.o可运行该文件
g++ -o [world] main.cpp编译+汇编+链接二进制文件main (或world)sudo ./prog可运行该文件
g++ main.cpp编译+汇编+链接二进制文件a.outsudo ./a.out可运行该文件
————————————————————————
objdump -d mstore.o反汇编二进制代码不生成,在终端显示结果
objdump -d prog反汇编二进制代码不生成,在终端显示结果

表格补充:如进行链接,则必须要有一个main函数

反编译器(disassembler)补充:反汇编特性:

  • 指令长度:x86-64的从1-15个字节不等,常用指令和操作数较少的指令所需的字节数少(反之)
  • 设计指令格式的方式:从某个给定位置开始可以唯一性解码(如:只有pushq %rbx是以字节值53开头的)
  • 指令名:反汇编使用的指令命名规则和GCC生成的有细微差别(如:末尾的q)

rcc

详见QT笔记

参考:【CSDN】Qt中rcc工具简介open in new window

RCC 代表 反向 C 编译器(Reverse C Compiler)(不确定)

Qt 自带的开发工具集里有专门的 rcc 工具,用于将 *.qrc 里面描述的图片、文档等编译成对应的源代码文件 qrc_*.cpp 或者独立的二进制资源文件 *.rcc。下面介绍 rcc 工具的两种用途:

  • (1)生成独立的二进制资源文件 *.rcc
  • (2)应用程序内嵌资源