我认为我的makefile有问题。我正在写这个程序:
Q2.cpp
包含主要内容。Agent.cpp
Agent.h
Timing.cpp
Timing.h
RandomDouble.cpp
RandomDouble.cpp
我正在使用randoma.h
中的标题RandomDouble.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 :(得分: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