У меня есть странная проблема в моем проекте Geany. Проект чрезвычайно прост и содержит 3 файла в одном каталоге: main.c
, foo.h
и foo.c
.Проект Geany включает ошибку компилятора
Compiler ошибка:
In file included from main.c:1:0:
foo.h:4:12: warning: ‘bar’ used but never defined
static int bar(void);
^
/tmp/cc0zCvOX.o: In function `main':
main.c:(.text+0x12): undefined reference to `bar'
Compilation failed.
collect2: error: ld returned 1 exit status
Что происходит не так?
main.c:
#include "foo.h"
int main(int argv, char* argc[])
{
bar();
return 0;
}
foo.h:
#ifndef _FOO_H_
#define _FOO_H_
static int bar(void);
#endif // _FOO_H_
foo.c:
#include "foo.h"
#include <stdio.h>
static int bar(void)
{
printf("Hello World\n");
return 1;
}
Проект не включает правильный вызов для gcc. Обновите команды Build-> Set Build и/или рассмотрите использование make-файла. Сначала вы должны скомпилировать foo.c и сделать его объектным файлом, а не компилировать main.c. Возможно, запрограммированная команда компиляции для foo.c хорошо работает для вас, но вы должны ее подтвердить. – frlan