LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 981|回复: 7

哪位对make比较了解?

[复制链接]
发表于 2003-3-4 16:48:55 | 显示全部楼层 |阅读模式
发信人: baif (LoveBaby), 信区: Unix                                             
标  题:  哪位对make比较了解?                                                
发信站: BBS 水木清华站 (Tue Mar  4 10:47:02 2003), 转信                        
                                                                                
Class:----------------------------------                                       
AList                                                                           
      list.h&alist.h&alist.cpp                                                
File:------------------------------------                                       
        alist.h alist.cpp main.cpp                                             
-----------------------------------------                                       
Including relationship:-----------------
    {alist.cpp-> include "alist.h"}                                             
    {main.cpp-> include "alist.h"}                                             
-----------------------------------------                                       
how to write a Makefile???                                                      
                                                                                
"main.cpp":-----------------------------                                 
#include "alist.h"
                                    
int main()                                                                     
{                                                                              
    AList<int> ABC(20);                                                         
}                                                                              
----------------------------------------                                       
                                                                                
Makefile:------------------------------                                       
CC = g++                                                                        
CFLAGS = -Wall                                                                  
                                                                                
# For Mine_AList                                                               
Main: main.o alist.o                                                            
        $(CC) $(CFLAGS) main.o alist.o -o Main                                 
main.o: main.cpp                                                               
        $(CC) $(CFLAGS) -c main.cpp -o main.o                                   
alist.o : alist.cpp alist.h                                                     
        $(CC) $(CFLAGS) -c alist.cpp -o alist.o                                 
# End                                                                           
----------------------------------------                                       
                                                                                
BUT-----------------------------------                                       
                                                                                
$ make                                                                          
g++ -Wall main.o alist.o -o Main                                                
main.o: In function `main':                                                     
main.o(.text+0x1a): undefined reference to `AList<int>::AList[in-charge](int)'  
main.o(.text+0x29): undefined reference to `AList<int>::~AList [in-charge]()'   
collect2: ld returned 1 exit status                                             
make: *** [Main] Error 1                                                        
---------------------------------------      

if the file"main.cpp" change into:
#include "alist.cpp"
, it will be do.  
发表于 2003-3-4 21:41:11 | 显示全部楼层
这和make无关。是程序中的AList<int>没有定义造成的。是不是没有alist.h这个文件?
 楼主| 发表于 2003-3-4 21:56:35 | 显示全部楼层
最初由 kj501 发布
这和make无关。是程序中的AList<int>没有定义造成的。是不是没有alist.h这个文件?


呵呵。这个问题有点奇怪,所有代码都没有问题,
但如果把main.cpp里include 改成alsit.cpp就没事。
或者把main.cpp中的调用改一下,不给构造函数加参数
就没事。。。


:eek:
发表于 2003-3-5 05:27:27 | 显示全部楼层
你的 Alist 是一个 template 吧?
g++ 实例化类的时候不光要求有template的定义,其实现部分也要可见。
 楼主| 发表于 2003-3-5 09:48:20 | 显示全部楼层
最初由 viper 发布
你的 Alist 是一个 template 吧?
g++ 实例化类的时候不光要求有template的定义,其实现部分也要可见。


不是吧。怎么这么弱?
发表于 2003-3-5 10:03:40 | 显示全部楼层
其实,试验一下就明白了。
 楼主| 发表于 2003-3-5 10:27:57 | 显示全部楼层
最初由 viper 发布
其实,试验一下就明白了。


不知是bug还是????在gcc.gun.org找了半天也没有找到。
真没有办法解决?我是说,还是要实现接口与实现的分离。
发表于 2003-3-5 12:54:29 | 显示全部楼层
应该是局限吧?好像还有的c++的编译器要求模板函数要用 inline 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表