Linux Makefile写法及问题程序说明
问题描述:
源文件:
main.cpp: 主程序,包含dictionary.h
dictionary.h:字典类实现,包含hashset.h和hashset.cpp(hashset用模板,所以也包含.cpp)
hashset.cpp hashset.h:模板实现hash类
$vi Makefile
mainapp:hashset.o dictionary.o
g++ hashset.o dictionary.o -o mainapp
hashset.o:hashset.h
g++ -g -c hashset.cpp hashset.h -o hashset.o
dictionary.o:dictionary.h
g++ -g -c dictionary.h -o dictionary.o
clean:
rm -rf *.o mainapp
$make 后错误提示为:
g++ hashset.o dictionary.o -o mainapp
hashset.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [mainapp] Error 1
直接用g++ 编译连接 $ g++ -g -o main main.cpp dictionary.h hashset.h ,会提示找不到dictionary类对象相关的错误。
希望高人给于指导意见!
源文件:
main.cpp: 主程序,包含dictionary.h
dictionary.h:字典类实现,包含hashset.h和hashset.cpp(hashset用模板,所以也包含.cpp)
hashset.cpp hashset.h:模板实现hash类
$vi Makefile
mainapp:hashset.o dictionary.o
g++ hashset.o dictionary.o -o mainapp
hashset.o:hashset.h
g++ -g -c hashset.cpp hashset.h -o hashset.o
dictionary.o:dictionary.h
g++ -g -c dictionary.h -o dictionary.o
clean:
rm -rf *.o mainapp
$make 后错误提示为:
g++ hashset.o dictionary.o -o mainapp
hashset.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [mainapp] Error 1
直接用g++ 编译连接 $ g++ -g -o main main.cpp dictionary.h hashset.h ,会提示找不到dictionary类对象相关的错误。
希望高人给于指导意见!
作者: hitulric 发布时间: 2011-05-01
$ g++ -g -o main main.cpp dictionary.h hashset.h
怎么没.c文件呢
怎么没.c文件呢
作者: Esperantor 发布时间: 2011-05-01
g++ hashset.o dictionary.o -o mainapp
-->让编译器编译.o文件,不行啊。
$ g++ -g -o main main.cpp dictionary.h hashset.h
-->你的实现文件呢?只有一个main.cpp?其它的呢?
PS:编译多个源文件时,可直接写实现文件,即.c或.cpp文件,.h就不要了。
-->让编译器编译.o文件,不行啊。
$ g++ -g -o main main.cpp dictionary.h hashset.h
-->你的实现文件呢?只有一个main.cpp?其它的呢?
PS:编译多个源文件时,可直接写实现文件,即.c或.cpp文件,.h就不要了。
作者: subfate 发布时间: 2011-05-01