makefile for windows

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.o和main,o两个中间代码的文件,类似于VC中的obj文件
 
3.       makefile 的编写规则
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
正如同 VC debug 编译模式一样, GCC 也有 debug 模式。添加了 -g 参数编译的可执行程序比普通程序略为大一些,其中添加了一些调试代码。这些代码将被 gdb 所支持。
 
连接时缩小代码体积
$gcc -s -o yours yours.o
这个参数,似乎我没有在 Unix 环境下看到过。也不知道具体什么作用。因为有人说 Visual-MinGW 生成的代码小,于是研究了一下她的编译参数,发现 release 模式的编译参数就加了这一项。貌似编译后的代码的确缩小了很多。
 
获得帮助
$gcc --help
这条指令从意思上就能看出,获得 gcc 的帮助信息。如果您有什么特殊需要,也许这个指令能帮上点小忙。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值