Мне нелегко писать make-файлы. У меня есть опыт в использовании extern
переменные, когда я разрабатываю проект, не используя make-файлы, я не получаю абсолютно никаких ошибок и я могу запустить программу. Но со времени я записал make-файл для разрабатывания проекта, я добираюсь undefined reference to
ошибки.
У меня есть больше чем 3 файла со мной, но, для пользы простоты я использую 3 файла здесь для объяснения установки.
/************Project********/
/* main.c */
int x;
main()
{
...
}
/* File1.c*/
extern int x;
fn1()
{
...
}
/* File2.c*/
extern int x;
fn2()
{
...
}
/*******************************/
После использования make-файла я добираюсь undefined reference to
ошибки в течение связывающегося времени, указывающего на File1.c и File2.c?
Я делаю ошибку, которую затмение фиксирует самостоятельно (когда make-файл не используется), и который появляется, когда я использую make-файл?
Мой заключительный make-файл похож на это -
OBJ1 = algorithm/main.o algorithm/File1.o algorithm/File2.o
all: final
final: main.o algorithm/File1.o algorithm/File2.o
@echo "Linking - making Final"
$(CC) -o $@ $(OBJ1)
Несоответствие в вашем файле Makefile. Ваша конечная цель
зависит от main.o
, тогда как вы передаете $ (OBJ1)
компоновщику, который включает algorithm / main.o
.