Linux Makefile.am错误“未定义引用”

时间:2015-03-27 10:48:57

标签: c linux makefile

当我尝试编译我的程序时,我有这个错误

undefined reference to `printfHello'

我创建了一个简单的程序,包含三个文件hello.c,hello1.c和hello.h

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

如果我这样做---&gt; cc hello.c -o hello.c hello1.c。它工作正常。

我需要在makefile.am文件中定义其他内容吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您尚未在任何文件中定义printfHello()函数。请先首先定义该功能

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

答案 1 :(得分:0)

在文件hello1.c中,将PrintHola函数更改为printHello。编译器会产生错误,因为它在有原型时无法找到printHello的主体。