C++ linux中如何将静态库链接到makefile

C++ linux中如何将静态库链接到makefile,c++,linux,makefile,C++,Linux,Makefile,我已经使用数据库makefileproject/database/makefile创建了一个静态库,如下所示 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 S

我已经使用数据库makefileproject/database/makefile创建了一个静态库,如下所示

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
然后我将它链接到main make fileproject/main/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
但它的抛出错误如下: make:*没有规则使目标
database.h',这是
main.o'所需要的。停下来


请找个人帮我解决这个问题。我是linux新手。

LIBPATH
变量赋值末尾的makefile中有一个额外的反斜杠。这导致下一行(testdate:…
target)被认为是
LIBPATH
变量值的一部分。这反过来意味着之后的配方行(g++-o testdate…
行)没有定义目标,这就是为什么会出现该错误

删除反斜杠:

LIBPATH  = -L../LIBs

谢谢回复,工作正常,我还有一个问题,请检查一下,如果你有不同的问题,你应该打开一个新的SO问题。此错误表示您已将文件
database.h
列为先决条件,但make找不到该文件。它存在吗?它在其他目录中吗?Make无法猜测它在文件系统中的位置,因此如果您编写
database.h
Make将查找当前目录,如果它不在当前目录中,它将失败。