我的makefile有问题

or.*_*ore 1 c++ makefile

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

  • Q2.cpp 包含主要.
  • Agent.cpp Agent.h
  • Timing.cpp Timing.h
  • RandomDouble.cpp RandomDouble.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
Run Code Online (Sandbox Code Playgroud)

除第一个命令外,每个g ++ ..命令在我单独执行时都有效.甚至当我加入main()RandomDouble.cpp并运行:

g++ -Wall -g randomael64.a RandomDouble.cpp -o rand
Run Code Online (Sandbox Code Playgroud)

它正在工作.所以我认为可能问题出在我的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
Run Code Online (Sandbox Code Playgroud)

我需要说声明的函数randoma.hrandomaelf64.a库中.

我该如何解决这个问题?

Mik*_*our 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
Run Code Online (Sandbox Code Playgroud)