【发布时间】:2018-10-20 06:01:05
【问题描述】:
尝试编译我的程序,该程序具有三个源文件,分别称为 hencode.c、hdecode.c 和 htable.c。 htable.c 文件包含前两个文件使用的所有函数,htable.h 文件包含原型。这是我的 Makefile,但我在终端上不断收到 undefined reference to 'function' 错误。
两个文件都没有正确编译。
我使用这个命令编译文件:gcc -o hdecode -Wall -ansi -pedantic hdecode.c
我不知道出了什么问题。我在所有文件中都包含了"htable.h"。我认为错误可能在 Makefile 中,但我无法发现它。感谢您的帮助。
这是我的 Makefile:
CC = gcc
CFLAGS = -Wall -ansi -pedantic -g -std=c99
LD = gcc
all: hdecode hencode
hdecode: htable.o hdecode.o
$(LD) $(LDFLAGS) htable.o hdecode.o -o hdecode
hencode: htable.o hencode.o
$(LD) $(LDFLAGS) htable.o hencode.o -o hencode
hdecode.o: hdecode.c
$(CC) $(CFLAGS) -c hdecode.c
hencode.o: hencode.c
$(CC) $(CFLAGS) -c hencode.c
htable.o: htable.c
$(CC) $(CFLAGS) -c htable.c
clean:
@rm *.o hdecode hencode
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快(重新)阅读 About 和 How to Ask 页面,但更重要的是,请阅读有关如何创建 MCVE (How to create a Minimal, Complete, and Verifiable Example?) 或 SSCCE (Short, Self-Contained, Correct Example) 的信息。
-
报告缺少哪个函数?它是在哪个源文件中定义的?我们应该怎么猜?当询问有关链接错误的问题时,请包括实际的错误消息(或者可能是每个函数的第一条消息,对于前几个函数)。没有这些信息,就不可能为您提供太多帮助。有了这些信息,可能很容易提供帮助。例如,如果缺少的函数是标准函数,例如
sqrt(),我们可以诊断出您需要数学库(通常是-lm,在完全需要它的系统上)。
标签: c makefile terminal compiler-errors compilation