Linux的Makefile简单实例教程

2014-11-24 03:29:34 · 作者: · 浏览: 2

先建立以下实例程序文本:


/**************************filename:main.c**************************/


#include


#include



#include "hello.h"


#include "init.h"



void aftermain(void)


{


printf("\n");


printf("<<<<<<>>>>>>>>\n");


printf("..............\n");


return 0;


}



int main(int argc,char *argv[])


{


printf("========main=======\n");


init(1234);


hello(argc,argv);


atexit(aftermain);


printf(".....exit main......\n");



return 0;


}


/**********************filename:init.c***************************/


#include


#include "init.h"



const char ro_data[1024]={"This is readonly data"};


static char rw_data[1024]={"This is readwrite data"};


static char bss_data[1024];



int init(int number)


{


printf("input number:%d\n",number);


printf("ro_data:%x,%s\n",(unsigned int)ro_data,ro_data);


printf("rw_data:%x,%s\n",(unsigned int)rw_data,rw_data);


printf("bss_data:%x,%s\n",(unsigned int)bss_data,bss_data);


return number;



}


/*******************filename:hello.c********************/


#include


#include "hello.h"



int hello(int argc,char *argv[])


{


int i;


printf("Hello world!\n");


for(i=0;i

{


printf("argv[%d]=%s\n",i,argv[i]);


}


return 0;


}


/****************filename:init.h*************************/


#ifndef _INIT_H_


#define _INIT_H_



int init(int number);



#endif


/*********************filename:hello.c*********************/


#ifndef _HELLO_H_


#define _HELLO_H_



int hello(int argv,char *argc[]);



#endif


由依赖关系可以知道:


All: main.o hello.o init.o


Main.o: main.c hello.h init.h


Hello.o:hello.c hello.h


Init.o init.h init.c



建立终端,在终端输入


Vi makefile1


即建立makefile1的文本文件


all: main.o hello.o init.o


gcc -o myapp main.o hello.o init.o



main.o: main.c hello.h init.h


gcc -c main.c


hello.o: hello.c hello.h


gcc -c hello.c


init.o: init.c init.h


gcc -c init.c


注意: 以“:”结尾的后面跟的是tab制表符,而不是空格


在终端输入 make –f makefile 即编译成功


Make文件中的注释以#开头