2010-09-02 88 views
1

我想我的makefile有问题。我正在写这个程序:我的makefile问题

  • Q2.cpp包含主要。
  • Agent.cppAgent.h
  • Timing.cppTiming.h
  • RandomDouble.cppRandomDouble.cpp

而且我用的标题randoma.hRandomDouble.cpp。 我下载的文件randomaelf64.a我写这个Makefile:

Q2 : Q2.o Agent.o Timing.o RandomDouble.o 
    g++ -Wall -g randomaelf64.a RandomDouble.o Q2.o Agent.o Timing.o -o Q2 

Q2.o : Q2.cpp Agent.h Timing.h 
    g++ -Wall -g -c Q2.cpp -o Q2.o 

Agent.o : Agent.cpp Agent.h Timing.h RandomDouble.h PrintQ2.h 
    g++ -Wall -g -c Agent.cpp -o Agent.o 

RandomDouble.o : RandomDouble.cpp RandomDouble.h randoma.h 
    g++ -Wall -g -c RandomDouble.cpp -o RandomDouble.o 

Timing.o : Timing.cpp Timing.h Agent.h 
    g++ -Wall -g -c Timing.cpp -o Timing.o 

clear : 
    rm *.o Q2 

除第一个命令,每个G ++ ..命令工作时,我单独做。 即使当我添加main()RandomDouble.cpp并运行:

g++ -Wall -g randomael64.a RandomDouble.cpp -o rand 

它的工作。所以我认为可能问题出在我的makefile上。

当我运行make我得到这个错误:

RandomDouble.o: In function `InitSeed()': 
/cs/stud/ofrenk33/CPP/ex1/RandomDouble.cpp:11: undefined reference to `MersenneRandomInit' 
RandomDouble.o: In function `InitSeed(int)': 
/cs/stud/ofrenk33/CPP/ex1/RandomDouble.cpp:16: undefined reference to `MersenneRandomInit' 
RandomDouble.o: In function `GetRandomDouble()': 
/cs/stud/ofrenk33/CPP/ex1/RandomDouble.cpp:21: undefined reference to `MersenneRandom' 
Agent.o: In function `Agent::SendMessage()': 
/cs/stud/ofrenk33/CPP/ex1/Agent.cpp:31: undefined reference to 
... 
make: *** [Q2] Error 1 

我必须说,有在randoma.h这些都是randomaelf64.a库中声明函数。

我该如何解决这个问题?

+0

那么究竟是什么_not_为您工作?你是否收到错误信息?如果不是,你的问题有哪些症状? – 2010-09-02 10:37:16

回答

5

你需要链接到库所有你自己的目标文件。链接器只包含尽可能多的库,如果没有未解决的引用,则不需要该库。将第一条规则更改为:

Q2 : Q2.o Agent.o Timing.o RandomDouble.o 
    g++ -Wall -g RandomDouble.o Q2.o Agent.o Timing.o randomaelf64.a -o Q2