C++ 我的makefile有问题吗

C++ 我的makefile有问题吗,c++,makefile,C++,Makefile,我想我的makefile有问题。我正在写这个程序: Q2.cpp包含主目录。 Agent.cpp Agent.h Timing.cpp Timing.h RandomDouble.cpp RandomDouble.cpp 我在RandomDouble.cpp中使用了标题randoma.h。 我下载了randomaelf64.a文件,并编写了以下makefile: Q2 : Q2.o Agent.o Timing.o RandomDouble.o g++ -Wall -g random

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

Q2.cpp包含主目录。 Agent.cpp Agent.h Timing.cpp Timing.h RandomDouble.cpp RandomDouble.cpp 我在RandomDouble.cpp中使用了标题randoma.h。 我下载了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添加到randodouble.cpp并运行:

它起作用了。所以我认为问题可能出在我的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库中


如何解决此问题?

您需要在所有对象文件之后链接库。链接器只包含它所需要的库,如果没有未解析的引用,那么就不需要库。将第一条规则更改为:

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

您需要在所有自己的对象文件之后链接库。链接器只包含它所需要的库,如果没有未解析的引用,那么就不需要库。将第一条规则更改为:

Q2 : Q2.o Agent.o Timing.o RandomDouble.o 
    g++ -Wall -g RandomDouble.o Q2.o Agent.o Timing.o randomaelf64.a -o Q2
那么,到底什么对你不起作用呢?您是否收到错误消息?如果没有,你的问题的症状是什么?那么到底什么对你不起作用呢?您是否收到错误消息?如果没有,您的问题有哪些症状?