在浏览了 LWIP 文档之后,我编写了一个简单的 tcp echo server 代码。为了编译它并创建一个可执行文件,我编写了以下 Makefile。现在,当我运行命令时,它会为makefile 中包含的make all
每个文件提供错误。
文件结构如下: 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()等函数"并且我已经给出了相应的编译路径。.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”中定义的某些头文件,并且我相应地给了 -I 参数。但是在运行make
时,输出显示“未定义的引用”所有在 lwip 头文件中定义的函数。可能是什么原因?我哪里错了?
谢谢大家的帮助。