Contiki: неопределенная ссылка на функцию, определенную в отдельном исходном файле

Я пишу программу, используя операционную систему Contiki.

У меня есть файл remote_firmware.c и папка с именем parser с файлами parser.h и parser.c, где я написал метод void test(). Я включил parser.h в remote_firmware.c с помощью:

#include "parser/parser.h"

Makefile выглядит так:

CONTIKI_PROJECT = remote_firmware
all: $(CONTIKI_PROJECT)

#UIP_CONF_IPV6=1

CONTIKI_WITH_RIME = 1
CONTIKI = $(HOME)/contiki

include $(CONTIKI)/Makefile.include

Когда я пытаюсь построить это, возникает ошибка:

неопределенная ссылка на «тест»

Я знаю, что Makefile должен знать о parser.h, но я не знаю, как это сделать. Я попробовал несколько решений, которые были предложены здесь, но я думаю, что сделал что-то не так. Может быть, кто-то из вас знает, что делать?

Большое тебе спасибо.


person Stormregion0    schedule 11.01.2018    source источник
comment
чтобы какая-то строка в вашем вопросе выглядела как «код», сделайте отступ в строке 4 пробела. В противном случае все строки идут вместе (как вы можете видеть в своем вопросе)   -  person user3629249    schedule 12.01.2018


Ответы (2)


Где находится ваш исходный файл? Попробуйте добавить имя исходного файла в переменную препроцессора PROJECT_SOURCEFILES (т.е. PROJECT_SOURCEFILES+=parser.c) и добавить местоположение исходного файла в переменную препроцессора CONTIKIDIRS (т.е. CONTIKIDIRS+={Directory}).

Если parser.c зависит от многих других файлов C, вы можете сначала создать архив библиотеки C, а затем добавить библиотеку в свой проект, добавив имя библиотеки в переменную TARGET_LIBFILES.

person KillaKem    schedule 18.01.2018

Ошибка undefined reference to test является ошибкой компоновщика, а не компилятора. Это не имеет ничего общего с включением файла заголовка. Это означает, что когда вы связали исполняемый файл, вы не включили parser.o

person cleblanc    schedule 11.01.2018
comment
Да. Это проблема с Makefile: CONTIKI_PROJECT = remote_firmware all: $(CONTIKI_PROJECT) #UIP_CONF_IPV6=1 PROJECT_SOURCEFILES += parser/parser.c CONTIKI_WITH_RIME = 1 CONTIKI = $(HOME)/contiki include $(CONTIKI)/Makefile.include Я добавил строку PROJECT_SOURCEFILES += parser/parser.c Но все же: › открытие файла зависимостей obj_zoul/parser/parser.d: Нет такого файла или каталога - person Stormregion0; 12.01.2018