windows下使用makefile编译C语言.doc

原创 2006年10月14日 14:29:00

1.       准备工作:

程序:

MinGW-3.1.0-1.exe      windows下的gcc,编译c语言的工具

下载地址: http://umn.dl.sourceforge.net/sourceforge/mingw/MinGW-3.1.0-1.exe

 make                           按照makefile规则编译程序的工具

位置 :window/system32下,如果没有可以在 http://www.mingw.org/download.shtml找到

配置环境: 

环境变量配置 :

控制面板> >高级 >环境变量 >系统变量 >添加MinGW 安装目录下的bin目录到path中去,或者命令行下运行:set PATH=  MinGW 安装目录下的bin目录

C:/WINDOWS/system32用上边方法添加到path中以找到make.exe

 

创建四个文件:

//---------------------------Main.c : ---------------------------//

#include "stdio.h"

main()

{

    func();

    printf("this is main/n");

    getch();

}

 

//---------------------------func.c : ---------------------------//

#include "stdio.h"

func()

{

    printf("this is func/n");

    getch();

}

 

一个空文件,文件名为makefile或者Makefile,这个文件名是必须的因为make默认查找该文件

 

创建compile.bat文件

内容为:

make

cmd

 

 

2.       编写makefile

示例:

test:main.o func.o      

       gcc -o test main.o func.o      

func.o:func.c   

       gcc -c func.c      

main.o:main.c      

       gcc -c main.c      

 

1行:生成test可执行文件,它的依赖于main.o func.o,也就是说生成test你得先生成它们,

2行:gcc前边必须是tab也就是7个空格,表示编译生成test

后边是依赖项的生成规则

 

然后运行compile.bat就可以生成test.exe文件了,同时会附加生成func.omain,o两个中间代码的文件,类似于VC中的obj文件

 

3.       makefile的编写规则

可以参看:http://www.stlchina.org/twiki/bin/view.pl/ScriptProgram/LearnMakefile

4.       gcc的参数

VC,TC等编译器不同,GCC其实是可以很方便的在提示符下编译程序的。GCC在提示符下编译程序,并没有如同VC那样的冗长而晦涩的编译参数。相反,却有着比VC更灵活且简短的参数。

不得不承认,不懂GCC编译参数的人,确实会损失一些GCC的强大功能。所以,我下面简单介绍一下GCC的一些基本编译参数。这里,我以C编译器为例。

 

编译二进制代码

$gcc -c yours.c -o yours.o

使用这段指令,GCC将会把yours.c编译成yours.o的二进制代码。其中,yours.o就类似于VC,TC中的.obj文档。

 

编译最简单的小程序。

$gcc -o yours yours.c

通过这条指令,GCC将会把yours.c源代码编译成名为yours的可执行程序。当然,您也可以将yours.c改成我们刚才介绍的yours.o文件。这样,gcc将使用编译刚才编译好的二进制文档来链接程序。这里,格式的特点是,-o 后面是一串文件列表,第一个参数是所编译程序的文件名,从第二个开始,就是您编译和连接该可执行程序所需要的二进制文档或者源代码。

 

编译时将自己的头文件目录设为默认头文件目录

$gcc -I”Your_Include_Files_Document_Path” -c yours.c -o yours.o

这条指令中的-I参数将会把Your_Include_Files_Document_Path添加到你默认的头文件目录中。这样您将可以使用 #include <your_include.h>来导入头文件。

 

编译时使用自己的静态库存放目录

$gcc -L”Your_Lib_Files_Document_Path” -o yours yours.o

这条指令将会让GCC在连接时除了在默认Lib存放目录中搜索指定的静态库以外,还会在Your_Lib_Files_Document_Path中搜索。

 

编译时使用静态连接库

$gcc -lyour_lib -o yours yours.o

这条指令将会让GCC在连接时把 libyour_lib.a中您所用到的函数连接到可执行程序中。此处注意,GCC所使用的静态连接库是lib*.a格式的。在连接时,只且仅需要提供*的内容就可以了。

 

编译时使用优化

$gcc -O2 -c yours.c -o yours.o

使用优化方式编译程序,其中除了-O2以外,还有-O3 -O1等等。他们代表不同的优化等级。最常用的,是-O2优化。当然,还有针对特殊CPU的优化,这里就不介绍了。

 

编译时显示所有错误和警告信息

$gcc -Wall -c yours.c -o yours.o

GCC在默认情况下,将对一些如变量申请未使用这样的问题或者申请了没有给予初始值的问题忽略。但是,如果使用了-Wall参数,编辑器将列出所有的警告信息。这样,您就可以知道您的代码中有多少可能会在其他操作系统下出错的地方了。(用这个指令看看你的代码有多少地方写的不怎么合适。)

 

编译连接时,加入调试代码

$gcc -g -o yours yours.c

正如同VCdebug编译模式一样,GCC也有debug模式。添加了-g 参数编译的可执行程序比普通程序略为大一些,其中添加了一些调试代码。这些代码将被gdb所支持。

 

连接时缩小代码体积

$gcc -s -o yours yours.o

这个参数,似乎我没有在Unix环境下看到过。也不知道具体什么作用。因为有人说Visual-MinGW生成的代码小,于是研究了一下她的编译参数,发现release模式的编译参数就加了这一项。貌似编译后的代码的确缩小了很多。

 

获得帮助

$gcc --help

这条指令从意思上就能看出,获得gcc的帮助信息。如果您有什么特殊需要,也许这个指令能帮上点小忙。

 

 

 

相关文章推荐

Windows安装GNU编译器使用makefile

Windows安装GNU编译器使用makefile 一、下载安装MinGW MinGW下载网页:http://sourceforge.net/projects/mingw/files/latest...
  • pdcxs007
  • pdcxs007
  • 2013年02月16日 12:52
  • 39972

window下通过makefile 文件编译C/C++源文件(Scintilla的windows例子)

今天从网上下载了一个Scintilla的例子,发现里面所带的C++窗口例子是通过makefile文件进行编译的,以前编译都是通过IDE环境,配置好后进行编译的,还真没用过makefile编译过文件,于...
  • Baple
  • Baple
  • 2010年06月03日 17:22
  • 5997

linux下的C语言开发(makefile编写)

对于程序设计员来说,makefile是我们绕不过去的一个坎。可能对于习惯Visual C++的用户来说,是否会编写makefile无所谓。毕竟工具本身已经帮我们做好了全部的编译流程。但是在Linux上...
  • koches
  • koches
  • 2012年05月28日 15:15
  • 14420

c, c++用makefile编译工程

基本思路: 最外层有三个文件: Makefile, Make.share, Make.include. 每个工程目录中都有一个Makefile文件. 其中最外层的Makefile是外壳部分.需要调用...
  • hanfazy
  • hanfazy
  • 2013年11月27日 13:21
  • 3541

使用makefile编译C语言文件遇到的问题

第二个问题是关于makefie的。众所周知,使用makefile可以对多个源文件进行编译,非常的方便简捷。但是在学习的过程中我遇到了一些小问题。使用makefile和在主函数所在的文件直接incldu...

Linux下C语言编译基础及makefile的编写

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13724/showart_80664.html 这篇文章介绍在LINUX下进行C语言编...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows下使用makefile编译C语言.doc
举报原因:
原因补充:

(最多只允许输入30个字)