linux下c++与c混合编程怎么连接

linux下c++与c混合编程如何连接
原来很多c文件生成o文件,通过gcc将o文件连接成可执行程序,现在加入了部分cpp程序,其编译器改为g++,也是生成o文件,连接的时候出错:ld: test.o: Relocations in generic ELF (EM: 3)
test.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [cpptest] Error 1
请问c++程序编译后的中间文件是什么类型?.o还是别的什么?如何与.o文件连接成可执行程序?
------解决思路----------------------
c的文件名后缀改成cpp 
或者在cpp中调用c的东西时用extern "C" 包括起来   比如 extern "C" { #include "c.h" }

------解决思路----------------------
不同的编译器生成的o文件格式未必一样的,所以g++识别不了旧的o文件,你需要重新用g++编译所有的文件一次。用楼上的方法解决link时会出现的函数名找不到的问题
------解决思路----------------------
 在 C 语言的头文件中一般有 

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

------解决思路----------------------
你应该找找C与c++混合编程方面的文章,下面是其中之一:
http://www.cnblogs.com/joeblackzqq/archive/2011/04/13/2014785.html