|
发表于 2006-5-22 01:56:29
|
显示全部楼层
Post by 北南南北
Linux下C语言编程基础知识
2.Makefile的编写
假设我们有下面这样的一个程序,源代码如下:
/* main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
mytool1_print("hello");
mytool2_print("hello");
}
/* mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
/* mytool1.c */
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}
当然由于这个程序是很短的我们可以这样来编译
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
这样的话我们也可以产生main程序,而且也不时很麻烦.但是如果我们考虑一下如果有一天我们修改了其中的一个文件(比如说mytool1.c)那么我们难道还要重新输入上面的命令?也许你会说,这个很容易解决啊,我写一个SHELL脚本,让她帮我去完成不就可以了.是的对于这个程序来说,是可以起到作用的.但是当我们把事情想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一个一个的去编译?
我在编译main.c的时候,得到如下错误提示
In file included from main.c:2:
mytool1.h:2:2: invalid preprocessing directive #ifndef_MYTOOL_1_H
mytool1.h:3:2: invalid preprocessing directive #define_MYTOOL_1_H
mytool1.h:7:2: #endif without #if
In file included from main.c:3:
mytool2.h:2:2: invalid preprocessing directive #ifndef_MYTOOL_2_H
mytool2.h:3:2: invalid preprocessing directive #define_MYTOOL_2_H
mytool2.h:7:2: #endif without #if
请问为什么呢?
系统及机器配置在签名档里 |
|