【发布时间】:2017-06-14 21:07:35
【问题描述】:
我遇到了 make 的问题。我有 3 个文件。
main.cpp | src/数学/Vector2.cpp | src/Math/Vector2.hpp
这是我的 MakeFile:
main: vector2.o main.o
g++ -o main.o vector2.o
main.o: main.cpp
g++ -o main.o main.cpp -c
vector2.o: src/Math/Vector2.cpp src/Math/Vector2.hpp
g++ -o vector2.o src/Math/Vector2.cpp -lm -c
当我手动复制这些命令时,它编译得非常好。 但是 $make main 返回
g++ main.cpp -o main
/tmp/ccnRZ4UD.o: In function `main':
main.cpp:(.text+0x42): undefined reference to `
phy2d::Maths::Vector2f::Vector2f(double, double)'
main.cpp:(.text+0x66): undefined reference to `
phy2d::Maths::Vector2f::Vector2f(double, double)'
main.cpp:(.text+0x79): undefined reference to `
phy2d::Maths::Vector2f::distance(phy2d::Maths::Vector2f const&)
const'
collect2: error: ld returned 1 exit status
<builtin>: recipe for target 'main' failed
make: *** [main] Error 1
有什么想法吗??
【问题讨论】:
-
尝试运行
make --dry-run,这将向您显示确切的命令 make 执行。那你应该能找到这个错误发生在哪一步,为什么... -
g++ main.cpp -o main这与 Makefile 中的内容不同。 Makfile 有额外的-c。 -
无论如何,你的 makefile 看起来有问题。它不会生成
main可执行文件。有两个目标都产生main.o