2014-01-21 177 views
0

爲Makefile我一直在使用數據庫生成文件項目/數據庫/ Makefile中這樣如何鏈接靜態庫在Linux

rm -rf libdatabase.a 
database.o: database.cpp database.h 
    g++ -c -o database.o database.cpp 
    ar rvs libdatabase.a database.o 
if [ -f libdatabase.a ]; 
then 
    echo "Database-Library Build Success" 
    cp libdatabase.a ../LIBs/ 
else 
    echo "databse-Library Build Failure" 
fi 

的話,我會先與主make文件鏈接項目/創建一個靜態庫主/ Makefile中這樣

rm -rf testdate 
INCPATH = -I../database 
LIBPATH = -L../LIBs 
testdate:main.o libdatabase.a 
    g++ -o testdate libdatabase.a main.o 
main.o: main.cpp database.h 
    g++ -c -o main.o main.cpp 

但像它的投擲的錯誤: 化妝:*沒有規則,使目標database.h', needed by main.o'。停止。

讓一些coluld幫我解決這個問題。我是linux新手。

回答

0

在變量賦值LIBPATH末尾的makefile中有一個額外的反斜槓。這導致下一行(testdate:...目標)被視爲LIBPATH的變量值的一部分。這又意味着之後的配方行(g++ -o testdate ...行)沒有定義目標,這就是爲什麼你會得到這個錯誤。

刪除反斜槓:

LIBPATH = -L../LIBs 
+0

感謝您的回覆其工作正常,我有一個問題,更ücolud一次,請檢查一下 – Jeggu

+0

您應該打開一個新的SO問題,如果你有一個不同的問題。這個錯誤意味着你已經列出了文件'database.h'作爲先決條件,但是make找不到那個文件。它存在嗎?它在其他目錄嗎? Make不能猜測你的文件系統在哪裏,所以如果你編寫'database.h' make會在當前目錄下查看,如果不存在則會失敗。 – MadScientist