gcc编译的具体执行过程

预处理---->编译---->汇编----->链接

假设有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。
























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言 make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。通过检查文件的修改时间,make 工具可以知道编译目标文件所要依赖的其他文件。在复杂的项目中,如果只有少数几个文件修改过,make 工具知道仅仅需要对哪些文件重新编译就可以确保目标程序被正确的编译链接。这样做的好处就是在编译中,不仅可以节省大量的重复输入,还可以确保程序可以被正确的链接,缩短编译的时间。虽然如此,但是为 make 工具编写建造规则却不是一件容易的事。它复杂的配置规则,即使是有经验的开发者也望而生畏。make 工具的许多替代品便因此而诞生,SCons 就是是其中之一。SCons 是一个用 Python 语言编写的类似于 make 工具的程序。与 make 工具相比较,SCons 的配置文件更加简单清晰明了,除此之外,它还有许多的优点。 -------------------------------------------------------------------------------- 回页首 SCons 简介 SCons 是一个开放源代码、以 Python 语言编写的下一代的程序建造工具。它最初的名字是 ScCons, 基于由 perl 语言编写的 Cons 软件开发而成,它在 2000 年 8 月获得了由 Software Carpentry 举办的 SC 建造比赛的大奖。现在 ScCons 已经被改名为 SCons,目的是为了表示不再与 Software Carpentry 有联系,当然,还有一个目的,就是为了更方便的输入。 作为下一代的软件建造工具,SCons 的设计目标就是让开发人员更容易、更可靠和更快速的建造软件。与传统的 make 工具比较,SCons 具有以下优点: 使用 Python 脚本做为配置文件 对于 C,C++ 和 Fortran, 内建支持可靠自动依赖分析 . 不用像 make 工具那样需要执行"make depends"和"make clean"就可以获得所有的依赖关系。 内建支持 C, C++, D, Java, Fortran, Yacc, Lex, Qt,SWIG 以及 Tex/Latex。用户还可以根据自己的需要进行扩展以获得对需要编程语言的支持。 支持 make -j 风格的并行建造。相比 make -j, SCons 可以同时运行 N 个工作,而不用担心代码的层次结构。 使用 Autoconf 风格查找头文件,函数库,函数和类型定义。 良好的夸平台性。SCons 可以运行在 Linux, AIX, BSD, HP/UX, IRIX, Solaris, Windows, Mac OS X 和 OS/2 上。 -------------------------------------------------------------------------------- 回页首 安装 SCons SCons 支持多种操作系统平台,并为各个系统制作了易于安装的文件,因此在各个系统平台上的安装方法不尽相同,在 SCons 的官方网站上可以查每个平台的具体安装方法。 如果 SCons 没有为你的系统制作相应的安装包,你也可以下载 SCons 的源代码,直接进行安装。 首先,从 SCons 的网站上下载最新的 SCons 源代码包(目前 SCons 的最新版本是 2.0.1)。其次,解压下载的源代码。视下载的源代码包的格式不同而有不同的方法,在 Windows 平台上,可是使用 winzip 或者其他类似的工具解压。在 Linux 平台上,对于 tar 包,使用 tar 命令进行解压,如: $ tar -zxf scons-2.0.1.tar.gz 然后切换进入解压后的目录进行安装,如 $ cd scons-2.0.1 $ sudo python setup.py install 命令执行如果没有错误,那么 scons 就被安装到系统上了。对于 Linux 来说,scons 会默认安装到 /usr/loca/bin 目录下,而在 Windows 平台上,则会被安装到 C:\Python25\Scripts 下。 -------------------------------------------------------------------------------- 回页首 使用 SCons 在 SCons 安装完成后,我们就可以使用 SCons 来建造我们的程序或者项目了。像很多编程书籍那样,在这里我们也通过一个简单的 helloscons 例子来说明如何使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值