gcc -E xx.c】的更多相关文章

编译器的核心任务是把C程序翻译成机器的汇编语言(assembly language).汇编语言是人类可以阅读的编程语言,也是相当接近实际机器码的语言.由此导致每种 CPU 架构都有不同的汇编语言. 实际上,GCC 是一个适合多种 CPU 架构的编译器,不会把C程序语句直接翻译成目标机器的汇编语言,而是在输入语言和输出汇编语言之间,利用一个中间语言,称为 RegisterTransfer Language(简称 RTL,寄存器传输语言).借助于这个抽象层,在任何背景下,编译器可以选择最经济的方式对…
C语言代码在交给编译器之前,会先由预处理器进行一些文本替换方面的操作,例如宏展开.文件包含.删除部分代码等. 在正常的情况下,GCC 不会保留预处理阶段的输出文件,也即.i文件.然而,可以利用-E选项保留预处理器的输出文件,以用于诊断代码.-E选项指示 GCC 在预处理完毕之后即可停止. 默认情况下,预处理器的输出会被导入到标准输出流(也就是显示器),可以利用-o选项把它导入到某个输出文件: $ gcc -E circle.c -o circle.i 表示把预处理的结果导出到 circle.i…
-c选项表示编译.汇编指定的源文件(也就是编译源文件),但是不进行链接.使用-c选项可以将每一个源文件编译成对应的目标文件. 目标文件是一种中间文件或者临时文件,如果不设置该选项,gcc 一般不会保留目标文件,可执行文件生成完成后就自动删除了. 注意,使用-c选项表示只编译源文件,而不进行链接,因此,对于链接中的错误是无法发现的. 下面例子演示了 gcc 编译器在使用-c选项的时候不会发现链接错误. 1) 编写如下的两个源文件. 在 func.c 中定义了 func_a() 函数: #inclu…
GCC   -l  option is to link the library. It can use for static and share link.  Link -l with library name without the lib prefix and the .a or .so extensions. Static : gcc   -static -ltest xx.c, it will link with libtest.a share : gcc –ltest xx.c it…
gcc编译器 $ gcc -o XX.exe XXX.c ddd.c $ gcc -o XX.asm -S XXX.c  编译生成可执行文件,并执行程序,缺省的时候,gcc 编译出来的文件是a.out -c 只编译并生成目标文件 -v/--v/--version      查看gcc版本号 -I 指定头文件目录,之间没有空格(例如:$ gcc -I./dir  xx.c xx.c -o app) -g 包含调试信息 -On n=0~3 编译优化,n越大优化得越多 -w 不生成任何警告信息 -Wa…
GCC学习 1.gcc是根据后缀名来区分文件的 .c : c语言源文件 .a : 目标文件构成的库文件 .C/.cc/.cxx : c++源文件 .h : 头文件 .i : 预处理过的C源文件 .ii : 预处理过的C++源文件 .o : 编译后的目标文件 .s : 汇编语言源代码文件 .S : 经过预处理的汇编语言源代码文件 2.生成可执行文件四个步骤 预处理 :宏展开,头文件引入, 编译 : 汇编 : 连接 : 3.GCC编译选项 -o :指定可执行文件的名字,默认是a -c :只做到编译即…
2015.2.27星期五,小雨 标准IO实现的复制功能: #include <stdio.h>#include <errno.h> #define N 64 int main(int argc, char *argv[]){ int n; char buf[N]; FILE *fps, *fpd; if(argc < 3) { printf("usage : %s <src_file><dst_file>\n",argv[0]);…
main.c  main.o/main.obj  main/main.exe          编译                连接 程序运行;      两步: gcc/g++  -c  main.c/main.cpp  -> main.o              gcc/g++ -o main  main.o -> main(可执行文件)     一步:  gcc -o main mian.c  -> main    工程文件:       rm  *.o     gcc  -…
分析ELF文件: 首先编写一个.c文件,并使用gcc -c xx.c -o xx.o 对其进行编译. 我在这个实践中是ELF_1.o文件. 接下来输入ls -l ELF_1.o 查看重定位文件的信息. 接下来以十六进制来查看该文件信息.输入:hexdump -x ELF_1.o 显示信息的最左一列表示的是偏移地址的16进制表示. 查看ELF文件头定义的规范.打开elf.h查看各部分内容的定义. 我们可以看出,32位的系统与64位的系统的ELF头部分结构大致相同.只是个别字段所占用的字节个数有不同…
测试-1-ch03 任务详情 通过输入gcc -S -o main.s main.c,将下面c程序"week04学号.c"编译成汇编代码 int g(int x){ return x+3; } int f(int x){ int i = 学号后两位: return g(x)+i; } int main(void){ return f(8)+1; } 删除汇编代码中 . 开头的代码,提交f函数的汇编代码截图,图中用矩形标出函数栈帧的形成和销毁的代码 知识点 C语言调用机制使用了栈数据结构…