2015-03-27 2 views
3

Когда я пытаюсь т скомпилировать свою программу, у меня есть эта ошибкаLinux Makefile.am ошибка «неопределенная ссылка на»

undefined reference to `printfHello' 

Я делаю простую программу, с тремя файлов hello.c, hello1.c и привет. ч

hello1.c:

#include <stdint.h> 
#include <unistd.h> 
#include <stdio.h> 
#include <stdlib.h> 
void printfHello() { 
    printf("Hello"); 
} 

hello1.h

void printfHello(); 

hello.c

#include <stdint.h> 
#include <unistd.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include "hello1.h" 

int main() { 
    int errn=0; 
    printfHello(); 
    return errn; 
} 

И у меня есть Makefile.am

bin_PROGRAMS = client_ev 

AM_CPPFLAGS = \ 
    -I$(top_srcdir)/include \ 
    -I$(top_builddir)/include 
# $(some_CFLAGS) 

EXTRA_DIST = \ 
    autogen.sh 

MAINTAINERCLEANFILES = \ 
    configure \ 
    aclocal.m4 \ 
    Makefile.in 

client_ev_SOURCES = hello.c hello1.c 

Если я ---> куб.см hello.c -o hello.c hello1.c. Он работает нормально.

Мне нужно определить что-то еще в файле makefile.am?

Спасибо.

ответ

1

Вы не определили функцию printfHello() в любом из файлов. Сначала сначала определите эту функцию, как

void printfHello() 
{ 
printf("Hello\n"); 
} 
+0

Или еще я думаю, что вы набрали имя функции неправильно в файле hello1.c –

+0

Я набрал имя неправильно, я его изменил, но он все еще не работает –

+0

Почему у вас нет u hello.c и hello1.c в следующей строке в Makefile.am? client_ev_SOURCES = client_ev.c hola.c hello.c hello1.c –

0

В файле hello1.c измените функцию PrintHola на печатьHello. Компилятор дает ошибки, потому что не может найти тело printHello, когда у него есть прототип.

+0

Я сделал это, но он все еще не работает –

Смежные вопросы