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

时间:2014-01-21 10:41:45

标签: c++ linux makefile

我使用数据库makefile project / 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

然后我会将它链接到主要生成文件 project / 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', needed by main.o'。停止。

请一些人帮助我解决这个问题。我是linux的新手。

1 个答案:

答案 0 :(得分:0)

LIBPATH变量赋值结束时,makefile中有一个额外的反斜杠。这导致下一行(testdate:...目标)被视为LIBPATH的变量值的一部分。这反过来意味着之后的配方行(g++ -o testdate ...行)没有定义目标,这就是你得到错误的原因。

删除反斜杠:

LIBPATH  = -L../LIBs