2014-01-21 126 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