gcc编译的具体执行过程
来源:互联网 发布:《世界第一等》知乎 编辑:程序博客网 时间:2024/04/26 06:29
预处理---->编译---->汇编----->链接
假设有hello.c文件,
预处理:gcc -E hello.c -o hello.i (hello.i是预处理过后生成的文件)
编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项”-E”进行查看.
编译:gcc –S hello.i –o hello.s (hello.s是存放的汇编代码)
在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。用户可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
汇编:gcc –c hello.s –o hello.o
汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码.
链接:gcc hello.o –o hello.exe
将编译输出文件hello.o链接成最终可执行文件hello.exe
比如我准备这么写一个dll的,可以先这样写,可以先使用一下看看。
dlltest.h
#ifndef _DLLTEST_H_ #define _DLLTEST_H_ #include <iostream.h> #include <stdio.h> #include <windows.h> extern "C" __declspec(dllexport) void NumberList(); extern "C" __declspec(dllexport) void LetterList(); #endif
dlltest.cpp
#include "dlltest.h" extern "C" __declspec(dllexport) void NumberList() { cout << "This in in NumberList" << endl; } extern "C" __declspec(dllexport) void LetterList() { cout << "This is in LetterList!" << endl; }
usedll.cpp
#include <conio.h> #include <dlltest.h> int main(){NumberList();LetterList();cout << "endl" << endl;return 0; }
编译的选项是:
g++ -o E:\WorkSpace\Dll_WorkSpace\dlltest.o -c E:\WorkSpace\Dll_WorkSpace\dlltest.cpp
g++ -IE:\WorkSpace\Dll_WorkSpace -o E:\WorkSpace\Dll_WorkSpace\usedll.o -c E:\WorkSpace\Dll_WorkSpace\usedll.cpp
这里加个大写的i在这,是因为头文件在这里面
然后:将.o文件链接。
g++ E:\WorkSpace\Dll_WorkSpace\dlltest.o E:\WorkSpace\Dll_WorkSpace\usedll.o -o E:\WorkSpace\Dll_WorkSpace\dlltest.exe
就完成了编译。good job。
- gcc编译的具体执行过程
- gcc编译的具体过程
- gcc编辑器具体编译过程
- gcc执行的过程
- gcc 的执行过程详解 预处理 编译 汇编 链接
- gcc编译C语言程序的执行过程
- struts的具体执行过程
- GCC的编译过程
- gcc的编译过程
- GCC的编译过程
- gcc的编译过程
- gcc编译器的具体处理过程
- 详细分析make uboot 最后的编译链接的具体执行过程
- 详细分析make uboot 最后的编译链接的具体执行过程
- 详细分析make uboot 最后的编译链接的具体执行过程
- 详细分析make uboot 最后的编译链接的具体执行过程
- TagSupport类的生命周期具体执行过程
- 88-zend_execute的具体执行过程
- 注册表操作的几个要注意的地方
- 无向图求点割集算法
- C运行时库(C Run-time Library)详解
- 如何Root 摩托罗拉 atrix 4g, android 2.2.2
- UE连接模式四种状态浅析
- gcc编译的具体执行过程
- java 继承 访问修饰符
- Lucene索引阶段设置Document Boost和Field Boost 实现合理打分
- ExecutorService+FutureTask实现程序执行超时监控
- const2buffer
- OpenMP编程入门之一
- hdu3478 Catch
- 8086 系统结构图
- MFC中操作office软件(doc和excel)