LWIP Makefile错误

时间:2016-01-11 15:00:41

标签: c makefile lwip

在浏览完LWIP文档后,我写了一个简单的tcp echo服务器代码。为了编译它并创建一个可执行文件,我编写了以下Makefile。现在,当我运行命令IEnumerable<SubCategory> result = from c in categories join s in subcategories on c.Name equals s.Parent into t from r in t.DefaultIfEmpty() where r == null ? false : r.Selected == true select new SubCategory { Name = s.Name, Parent = (r == null ? string.Empty : r.Name), Selected = r.Selected }; 时,它会为makefile中包含的每个make all文件提供错误。
文件结构如下: 1. tcp_server.c是我创建tcp服务器的主文件。 2.它使用&#34; lwip-1.4.1 / src / core / lwip / tcp.c&#34;中定义的tcp_new(),tcp_bind()等函数。和&#34; lwip-1.4.1 / src / core / lwip / tcp_out.c&#34;我已经给出了相应的编译途径。

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

.c

所有文件都包含在&#34; lwip-1.4.1 / src / include&#34;中定义的某些标题。我相应地给了-I的论据。但是在运行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 时,输出显示&#34;未定义的引用&#34; lwip头文件中定义的所有函数。可能是什么原因?我哪里错了?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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

对于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)