用户名: 密码: 忘记密码? 注册

linux下Makefile文件的编写

作者:  时间: 2010-10-15
linux下Makefile文件的编写
开始使用Linux编程时,一个很讨厌的问题就是如何写Makefile文件,由于在Linux下
不像在Windows下那么熟悉,有那么多好的软件(也许是对Linux孤陋寡闻了)。虽然
象Kylix和Anjuta这样的集成编译环境,但是Kylix太大太慢,用它编写console程序
不亚于高射炮打蚊子——大材小用,而Anjuta又太不稳定,况且字体有那么难看。不
说了,还是言归正传,看看Makefile该如何编写。



1. 简单的GCC语法:

如果你只有一个文件(或者只有几个文件),那么就可以不写Makefile文件(当然有
Makefile更加方便),用gcc直接编译就行了。在这里我们只介绍几个我经常用的几
个参数,第一是 “-o”,它后面的参数表示要输出的目标文件,再一个是 “-c”,
表示仅编译(Compile),不连接(Make),如果没有”-c”参数,那么就表示连接
,如下面的几个命令:

gcc –c test.c,表示只编译test.c文件,成功时输出目标文件test.o

gcc –c test.c –o test.o ,与上一条命令完全相同

gcc –o test test.o,将test.o连接成可执行的二进制文件test

gcc –o test test.c,将test.c编译并连接成可执行的二进制文件test

gcc test.c –o test,与上一条命令相同

gcc –c test1.c,只编译test1.c,成功时输出目标文件test1.o

gcc –c test2.c,只编译test2.c,成功时输出目标文件test2.o

gcc –o test test1.o test2.o,将test1.o和test2.o连接为可执行的二进制文件test


gcc –c test test1.c test2.c,将test1.o和test2.o编译并连接为可执行的二进制
文件test

注:如果你想编译cpp文件,那么请用g++,否则会有类似如下莫名其妙的错误:

cc3r3i2U.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0’
......

还有一个参数是”-l”参数,与之紧紧相连的是表示连接时所要的链接库,比如多线
程,如果你使用了pthread_create函数,那么你就应该在编译语句的最后加上”-lpthread
”,”-l”表示连接,”pthread”表示要