我看到過類似這樣的問題,但每個人都有不同的答案和目錄結構,不適合我。GCC鏈接一個靜態庫
我的生成文件:
CC = g++
DEBUG = -g -std=c++11
TARGET = main
OBJECT_FILES = BingResultSet.o main.o
INC_PATH = -I HTTPClientLib/include
LIB_PATH = -L HTTPClientLib/lib/
start: clean BingResultSet.o main.o
$(CC) $(DEBUG) $(INC_PATH) $(LIB_PATH) $(OBJECT_FILES) -o $(TARGET)
rm -f *.o
BingResultSet.o: BingResultSet.cpp BingResultSet.h
$(CC) $(DEBUG) $(INC_PATH) $(LIB_PATH) -c BingResultSet.cpp
main.o: main.cpp
$(CC) $(DEBUG) $(INC_PATH) $(LIB_PATH) -c main.cpp
clean:
rm -f $(OBJECT_FILES) $(TARGET)
我的文件結構:
/Desktop/DataMiner/.cpp, .h, and makefile
/Desktop/DataMiner/HTTPClientLib/include/HTTPClient.h
/Desktop/DataMiner/HTTPClientLib/lib/HTTPClient.a
是什麼在我的makefile鏈接我的靜態庫的正確方法是什麼?
makefile在構建之前不應該要求運行'clean'來獲得合理的結果。如果你需要你的makefile文件寫得不正確。每個目標應創建一個目標名稱(不是其他名稱)的文件,以便make可以正確地完成其工作。 –
你問如何將'HTTPClient.a'鏈接到你的輸出'main'二進制文件?你知道如何與靜態庫鏈接正常工作嗎? (這是你如何在沒有makefile的情況下手工完成的?) –
不確定你的意思是「手工沒有makefile」。我知道如何鏈接VS上的靜態庫,但現在我試圖在Linux上構建項目,所以gcc上的鏈接有點不同,給我一些問題。 –