我遇到了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