Я новичок в Makefile, C и Linux. Я использую g cc & Ubuntu. Я столкнулся с проблемой при попытке скомпилировать код со ссылкой на библиотеку.
Вот моя проблема. У меня есть:
a_tests.c & b_tests.c files in "tests" folder
lib.a file in "build" folder
Вот коды в Makefile, связанные с проблемой:
CFLAGS=-g -O2 -Wall -Wextra -Isrc -DNDEBUG $(OPTFLAGS)
TARGET=build/lib.a
TEST_SRC=$(wildcard tests/*_tests.c)
TESTS=$(patsubst %.c,%,$(TEST_SRC))
tests: CFLAGS += $(TARGET)
tests: $(TESTS)
Когда файлы тестов скомпилированы, ошибки «неопределенная ссылка на« XXXfunction »будут ответ на запрос. Потому что то, что выполняется позади, это
gcc -g -O2 -Wall -Wextra -Isrc -DNDEBUG build/lib.a tests/a_tests.c -o test/a_tests
gcc -g -O2 -Wall -Wextra -Isrc -DNDEBUG build/lib.a tests/b_tests.c -o test/b_tests
Но после имени выходного файла следует поместить «build / lib.a» (если я вручную введу приведенные ниже команды, коды будут успешно скомпилированы) , ie:
gcc -g -O2 -Wall -Wextra -Isrc -DNDEBUG tests/a_tests.c -o test/a_tests build/lib.a
gcc -g -O2 -Wall -Wextra -Isrc -DNDEBUG tests/b_tests.c -o test/b_tests build/lib.a
Но я не знаю, как изменить в Makefile, я пробовал опции -l -L, они не работали. Это предупредит, что "не может найти файл .a". Любая помощь будет оценена. Огромное спасибо заранее!