我工作的一個相當大的,雜亂的項目,我還沒有真正有時間來清理幾個庫文件和目標文件的靜態庫,我一直在負責提供它的API。我想要做的是將所有醜陋的東西包裝在一個靜態庫中,然後提供一個頭文件。鏈接到由使用一個頭文件
但是當試圖使用頭文件和庫生成一個可執行文件時,我收到了一堆「未定義的引用」錯誤。我想如果我提供了所有的頭文件,它會工作,但我真的不想這樣做。
眼下makefile
看起來是(稍微改變爲簡單起見)是這樣的:
myprog.elf : libgiant_lib.a main.o
gcc -pg -o [email protected] main.o -lgiant_lib
main.o : main.c
gcc -c $(CFLAGS) $(SOME_INCLUDES) $< -o [email protected]
libgiant_lib.a : $(A_BUNCH_OF_LIBS) $(COUPLE_OF_OBJS) api.o
ar rcs [email protected] $^
api.o : api.c api.h
gcc -c $(CFLAGS) $(INCLUDES_FOR_BUNCH_OF_LIBS) $< -o [email protected]
我檢查了libgiant_lib.a
存檔,它似乎包含所有的庫和目標它應該文件。但是,連接它並不起作用。
我敢肯定,我失去了一些東西很明顯這裏...
所以,我決定只將目標文件到歸檔相反,現在看來是打算工作。 – user1986698