linux makefile 二义性 问题

源代码在window 上编译没有问题。
在linux上使用:g++ -c main.cpp ; g++ -o main main.o 。编译也没有问题
但是用makefile编译:

OBJ=main
CPP= g++
FLAG=-c 

main:main
    ${CPP} -o ${OBJ} main.o
    make clean

main.o:main.cpp
    ${CPP} ${FLAG} main.cpp 

clean:
    rm *.o

就提示有错误:undefined reference to `std::*'
请问这是怎么一回事?

 二义性问题

1.在继承时,基类之间、或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性——同名二义性。
2.当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生另一种不确定性——路径二义性。

同名二义性
同名隐藏规则——解决同名二义的方法

          ......
答案就在这里:C++ 二义性问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

http://www.cnblogs.com/Daniel-G/p/3286614.html