Я пытаюсь скомпилировать свой проект для отладки, используя Makefile. В настоящий момент make-файл генерирует несколько разных объектных файлов, а затем компилирует один исполняемый файл из всех этих разных объектных файлов. Файл make выглядит следующим образом:
CC=gcc
Scheduler: scheduler-exec.o scheduler-impl.o lab5_linkedlist.o lab5_queue.o
$(CC) -o Scheduler scheduler-impl.o scheduler-exec.o lab5_linkedlist.o lab5_queue.o
scheduler-exec.o: scheduler-exec.c
$(CC) -c -o scheduler-exec.o scheduler-exec.c
scheduler-impl.o: scheduler-impl.c
$(CC) -c -o scheduler-impl.o scheduler-impl.c
queue.o: lab5_queue.c
$(CC) -c -o lab5_queue.o lab5_queue.c
linkedlist.o: lab5_linkedlist.c
$(CC) -c -o lab5_linkedlist.o lab5_linkedlist.c
clean:
rm *.o
Я бы хотел сохранить эту распределенную систему компиляции так, чтобы я генерировал эти разные объектные файлы и затем компилировал их вместе, используя задачу Scheduler
в Makefile. Я попытался добавить флаг -g
ко всем задачам, но когда я запустил gdb
на сгенерированном исполняемом файле Scheduler
, он все еще не имел отладочной информации. Вывод программы gdb
такой:
GNU gdb (GDB) 8.3
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin18.5.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from Scheduler...
--Type <RET> for more, q to quit, c to continue without paging--
, и программа просто застряла там. Я был бы признателен за метод, с помощью которого я могу скомпилировать эту программу, используя Makefile, и иметь возможность получать информацию о переменных. Спасибо
Я попробовал следующий make-файл, он не работал:
CC=gcc
Scheduler: scheduler-exec.o scheduler-impl.o lab5_linkedlist.o lab5_queue.o
$(CC) -o Scheduler scheduler-impl.o scheduler-exec.o lab5_linkedlist.o lab5_queue.o -g
scheduler-exec.o: scheduler-exec.c
$(CC) -c -o scheduler-exec.o scheduler-exec.c -g
scheduler-impl.o: scheduler-impl.c
$(CC) -c -o scheduler-impl.o scheduler-impl.c -g
queue.o: lab5_queue.c
$(CC) -c -o lab5_queue.o lab5_queue.c -g
linkedlist.o: lab5_linkedlist.c
$(CC) -c -o lab5_linkedlist.o lab5_linkedlist.c -g
clean:
rm *.o