C LWIP生成文件错误

C LWIP生成文件错误,c,makefile,lwip,C,Makefile,Lwip,在阅读了LWIP文档之后,我编写了一个简单的tcp echo服务器代码。为了编译它并创建一个可执行文件,我编写了以下Makefile。现在,当我运行命令makeall时,它会为makefile中包含的每个.c文件提供错误信息。 文件结构如下: 1.tcp_server.c是我创建tcp服务器的主文件。 2.它使用了“lwip-1.4.1/src/core/lwip/tcp.c”和“lwip-1.4.1/src/core/lwip/tcp_out.c”中定义的tcp_new()、tcp_bind(

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

我只是一个编写makefiles的初学者,在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”中定义的某些头文件,我相应地给了-I参数。但是,在运行
make
时,输出显示lwip头文件中定义的所有函数的“未定义引用”。原因可能是什么?我错在哪里


谢谢您的帮助。

未定义的引用是链接器错误,因此您应该

对于gcc,您应该使用-L指定包含库的目录,并使用-L链接特定库。例如,更改makefile中的行

LFLAGS= -L../STABLE-1_4_0/ports/unix/proj/lib
删除LIBS之前的注释并更改此目标

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

对于${INCLUDES}@sabbahillel,尝试使用include文件的绝对地址而不是include文件的相对地址,但没有效果。Makefile的语法或逻辑中没有任何可见的错误吗?lwip.so文件位于LFLAGS路径中,因此我是否需要再次给出lwip.so文件的路径,或者它将从LFLAGS知道在哪里查找lwip.so文件?它将在-L提供的目录中查找liblwip.so文件,当您指定-llwip时