LWIP Makefile 错误

LWIP Makefile error

看完LWIP文档后,我写了一个简单的tcp echo server代码。为了编译它并创建一个可执行文件,我编写了以下 Makefile。现在,当我 运行 命令 make all 时,它会为 makefile 中包含的每个 .c 文件给出错误。
文件结构如下: 1. tcp_server.c 是我创建 tcp 服务器的主要文件。 2.它使用了tcp_new(), tcp_bind()等定义在"lwip-1.4.1/src/core/lwip/tcp.c"和"lwip-1.4.1/src/core/lwip/tcp_out.c"中的函数,我已经给出了相应的编译路径。

我只是编写 makefile 的初学者,并且通过 GNU Make 文档编写了以下文件。

CC=gcc

CFLAGS= -g -Wall

LWIPDIR=../lwip-1.4.1/src

TARGET=tcp_server

INCLUDES= -I../lwip-1.4.1/src/include -I../STABLE-1_4_0/ports/unix/proj/lib\
        -I../STABLE-1_4_0/ports/unix/include -I../lwip-1.4.1/src/include/ipv4

LFLAGS= -L../STABLE-1_4_0/ports/unix/proj/lib/liblwip.so

#LIBS= -llwip

COREFILES=$(LWIPDIR)/core/tcp.c $(LWIPDIR)/core/tcp_out.c

VPATH = $(LWIPDIR)/core

OBJS = tcp_server.o tcp.o tcp_out.o

MAIN=tcp_server

all : edit

edit : $(OBJS)
        $(CC) $(CFLAGS) $(INCLUDES) -o edit $(OBJS) $(LFLAGS)

tcp_server.o : tcp_server.c tcp.o tcp_out.o
        $(CC) $(CFLAGS) $(INCLUDES) -c tcp_server.c $(LFLAGS)

tcp.o : $(LWIPDIR)/core/tcp.c
        $(CC) $(CFLAGS) $(INCLUDES) -c $(LWIPDIR)/core/tcp.c $(LFLAGS)

tcp_out.o : $(LWIPDIR)/core/tcp_out.c
        $(CC) $(CFLAGS) $(INCLUDES) -c $(LWIPDIR)/core/tcp_out.c  $(LFLAGS)

clean :
        rm -f *.o

所有文件都包含 "lwip-1.4.1/src/include" 中定义的某些 header,我相应地给了 -I 参数。但是在 运行ning make 上,输出显示 "Undefined reference to" lwip header 文件中定义的所有函数。可能是什么原因?我哪里出错了?

感谢大家的帮助。

UNDEFINED REFERENCE 是一个 linker 错误,所以你应该这样做;

对于 gcc,您应该使用 -L 来指定您的库所在的目录,并使用 -l 来 link 一个特定的库。例如,更改您的 makefile 中的行;

LFLAGS= -L../STABLE-1_4_0/ports/unix/proj/lib

删除 LIBS 之前的注释并更改此目标

edit : $(OBJS)
        $(CC) $(CFLAGS) $(INCLUDES) -o edit $(OBJS) $(LFLAGS) $(LIBS)