как связать статическую библиотеку с makefile в Linux

0

Я создал статическую библиотеку, используя базу данных 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

то я собираюсь связать его в главном файле проекта /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: * Нет правила для создания target database.h', needed by main.o'. Стоп.

Плэше мне поможет одна из них. Я новичок в Linux.

Теги:
makefile

1 ответ

0

У вас есть дополнительная обратная косая черта в вашем файле makefile в конце назначения переменной LIBPATH. Это приводит к тому, что следующая строка (testdate:... target) считается частью значения переменной для LIBPATH. Это, в свою очередь, означает линию рецепта после этого (g++ -o testdate...) не имеет определенной цели, поэтому вы получаете эту ошибку.

Удалите обратную косую черту:

LIBPATH  = -L../LIBs
  • 0
    Спасибо за ответ, он работает нормально, у меня возникла еще одна проблема, пожалуйста, проверьте ее один раз.
  • 0
    Вы должны открыть новый вопрос SO, если у вас есть другая проблема. Эта ошибка означает, что вы указали файл database.h как предварительное условие, но make не может найти этот файл. Это существует? Это в каком-то другом каталоге? Make не может угадать, где она находится в вашей файловой системе, поэтому, если вы напишите database.h make будет искать в текущем каталоге, а если его там нет, произойдет сбой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню