[英]Makefile is not working
我正在嘗試使我的makefile工作,但它給了我一些錯誤,我無法使其工作。
OBJS = Kmeans.o cluster.o data.o
CC = g++
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
clustering : $(OBJS)
$(CC) $(LFLAGS) $(OBJS) -o clustering
Kmeans.o : Kmeans.h Kmeans.cpp cluster.h data.h
$(CC) $(CFLAGS) Kmeans.cpp
cluster.o : cluster.h cluster.cpp data.h
$(CC) $(CFLAGS) cluster.cpp
data.o : data.h data.cpp
$(CC) $(CFLAGS) data.cpp
clean:
\rm *.o *~ clustering
文件是:
clustering.cpp -> #include "Kmeans.h"
Kmeans.cpp -> #include "Kmeans.h"
Kmeans.h -> #include "cluster.h"
cluster.cpp -> #include "cluster.h"
cluster.h -> #include "data.h"
data.cpp -> #include "data.h"
我究竟做錯了什么?
編輯:對不起,我忘了包含以下錯誤:
Kmeans.o: In function `Kmeans::read(char*)':
Kmeans.cpp:(.text+0x53c): undefined reference to `Data::~Data()'
cluster.o: In function `Cluster::Cluster(int, int, int)':
cluster.cpp:(.text+0x45): undefined reference to `Data::~Data()'
cluster.cpp:(.text+0x80): undefined reference to `Data::~Data()'
cluster.o: In function `Cluster::Cluster()':
cluster.cpp:(.text+0xca): undefined reference to `Data::~Data()'
cluster.cpp:(.text+0x110): undefined reference to `Data::~Data()'
cluster.o: In function `Cluster::setData(int, int, int)':
cluster.cpp:(.text+0x158): undefined reference to `Data::~Data()'
collect2: ld devolvió el estado de salida 1
make: *** [clustering] Error 1
謝謝!
我編譯每個文件,問題出在最后一行:
g++ -c -o clustering.o clustering.cpp
g++ -c -o data.o data.cpp
g++ -c -o Kmeans.o Kmeans.cpp
g++ -c -o cluster.o cluster.cpp
g++ -o clustering clustering.o data.o Kmeans.o cluster.o <----
似乎您在data.h
有Data::~Data
data.h
聲明,並且在任何地方都沒有定義。
只需從標頭中刪除聲明或添加空定義即可,它是一個虛擬的析構函數。
該錯誤似乎不在您的makefile中,而是在您的CPP文件中。 嘗試手動編譯它,然后使用makefile使其自動化。
可能是您忘記了在data.cpp
寫入Data::~Data()
data.cpp
Data::~Data()
的data.cpp
示例MAKEFILE應該是這樣的:
#list of pseudo variables here
executable: object1.o object2.o object3.o
ld -r object1.o object2.o object3.o -o executable
object1.o : object1.cpp
$(CC) object.cpp -o object1.o
object2.o : object2.cpp
$(CC) object2.cpp -o object2.o
object3.o : object3.cpp
$(CC) object3.cpp -o object3.o
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.