当前位置: 技术问答>linux和unix
求助!Linux下多个.c和.h的编译问题
来源: 互联网 发布时间:2015-10-23
本文导语: 我的程序包含三个文件:两个c文件main.c和test.c,一个头文件test.h test.h文件中一些函数声明,而test.c文件中则是test.h中声明的函数的函数体 main.c文件中主函数会调用test.h中声明的函数 我在main.c中#include "test.h" 在test.c...
我的程序包含三个文件:两个c文件main.c和test.c,一个头文件test.h
test.h文件中一些函数声明,而test.c文件中则是test.h中声明的函数的函数体
main.c文件中主函数会调用test.h中声明的函数
我在main.c中#include "test.h"
在test.c中也#include "test.h"
然后编译gcc -o main main.c
编译结果是test.h中声明的函数undefined refrence
似乎是说test.c和test.h没有关联起来
请问:在不把所有函数放在一个文件里时,我应该怎么编译?
test.h文件中一些函数声明,而test.c文件中则是test.h中声明的函数的函数体
main.c文件中主函数会调用test.h中声明的函数
我在main.c中#include "test.h"
在test.c中也#include "test.h"
然后编译gcc -o main main.c
编译结果是test.h中声明的函数undefined refrence
似乎是说test.c和test.h没有关联起来
请问:在不把所有函数放在一个文件里时,我应该怎么编译?
|
1.gcc -o main main.c test.c(没有具体试过,不知道行不行)
2.最好还是用MakeFile进行编译
2.最好还是用MakeFile进行编译
|
要用Makefile文件进行编译
|
这个你只需要写一个简单的Makefile文件之后用make命令就可以编译了。
eg.
OBJS = test
CC = gcc
CFLAGS = -Wall -g
all: $(OBJS)
test : m.o test.o
$(CC) -o $(OBJS) *.o
.c.o:
$(CC) -c -o $*.o $*.c
#m.o : m.c
# $(CC) $(CFLAGS) -c $
eg.
OBJS = test
CC = gcc
CFLAGS = -Wall -g
all: $(OBJS)
test : m.o test.o
$(CC) -o $(OBJS) *.o
.c.o:
$(CC) -c -o $*.o $*.c
#m.o : m.c
# $(CC) $(CFLAGS) -c $