我遇到了make问题。我有3个文件。Makefile链接
main.cpp | src/Math/Vector2.cpp | SRC /数学/ Vector2.hpp
这里是我的生成文件:
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
当我手动复制这些命令,它编译完全没有问题。 然而$使主回报
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
任何想法?
尝试运行'做--dry-run',这会告诉你确切的命令使执行。那么你应该能够找到在哪一步发生此错误,为什么...... –
'g ++ main.cpp -o main'这与Makefile中的内容不一样。 Makfile有额外的'-c'。 – kaylum
无论如何,你的makefile看起来不对。它不会产生'main'可执行文件。有两个目标,这两个目标都产生'main.o' – kaylum