Linux的Makefile简单实例教程
(测试版本:RedHat 9.0简体中文版)
先建立以下实例程序文本:
/**************************filename:main.c**************************/
#include <stdio.h>
#include <stdlib.h>
#include "hello.h"
#include "init.h"
void aftermain(void)
{
printf("\n");
printf("<<<<<<<aftermain>>>>>>>>>\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 <stdio.h>
#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 <stdio.h>
#include "hello.h"
int hello(int argc,char *argv[])
{
int i;
printf("Hello world!\n");
for(i=0;i<argc;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文件中的注释以#开头