linux下makefile文件的编写

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux下Makefile文件的编写- 红联Linux门户- 中国领先

的Linux技...

linux下Makefile文件的编写victorywylbc发布于

2009-7-30 |

951次阅读字号: 大中小(网友评论7 条) 我要评论开始使用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.ogcc –c test.c

–o test.o ,与上一条命令完全相同gcc –o test test.o,将test.o连接成可执行的二进制文件testgcc

–o test test.c,将test.c编译并连接成可执行的二进制文件testgcc test.c –o test,与上一条命令相同gcc –c test1.c,只编译test1.c,成功时输出目标文件test1.ogcc –c test2.c,只编译test2.c,成功时输出目标文件test2.ogcc –o test test1.o test2.o,将

test1.o和test2.o连接为可执行的二进制文件testgcc

–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”表示要连接的库,注意他们在这里要连在一起写

,还有比如你使用了光标库curses,那么呢就应该在后面加上”-lcurses”,比如下

面的写法:gcc –o test test1.o test2.o

–lpthread –lcurses当然gcc的参数我感觉有几百个,不过我们平时在x86机器上用的就这么些,况且这里

也不是GCC教程,所以,就此打住。2. Makefile基本语法我这里没有Makefile的详细设计书,只是凭着看别人的Makefile文件和一些网上的参

考资料,作一些简单的介绍(我自己理解的,不对的地方还请各位老大们指出,鄙人

将不甚感激)2.1 目标:大家在看别人使用Makefile文件时肯定经常见到有的人常用make all, make install

, make clean等命令,同样只有一个Makefile文件,那么all、install、clean参数

是如何控制Makefile文件的运行呢(这句话有问题,但我不知道该怎么说,大家能看

懂我的意思,就放我一马吧)?在这里,如果向上面的命令如果能够正确运行的话,

那么在Makefile文件里一定有这样的几行,他们的开始一定

是all:

×××××××× ×××××××× ××install:

×××××××× ×××××××× ×clean:

×××××××× ×××××××× ××××当然也不尽然,因为all,install,clean我们可以用其他的变量来代替,但是着了

我们就简单起见,就下定论了,各位别怪。在上面提到的all,install,clean等就是我们所说的目标。make all命令,就告诉

make我们将执行all所指定的目标。为了便于理解Make程序的流程,我们给大家看一

个与gcc毫无关系的Makefile文件:# #表示Makefile文件中的注释,下面是Makefile文件的具体内容all:@echo you have typed command “make

all”clean:@echo you have typed command

“make clean”install:@ehco you have typed command “make $@”#Makefile文件结束注

相关文档
最新文档