我正在研究一个项目,并尝试编译我的代码。我刚把这个代码从windows(VC ++)转移到linux上,它在windows上工作得很好,但是我无法在linux上编译它。
该程序使用zeromq进行TCP连接,我在构建时遇到了多个错误。类型的错误:
/usr/local/include/zmq.hpp:372: undefined reference to `zmq_bind'
/usr/local/include/zmq.hpp:415: undefined reference to `zmq_msg_send'
我已经通过我的linux机器上的tarball安装了zeromq,并手动将zmq.hpp添加到/ usr / local / include文件夹中。我怀疑我在makefile中做错了什么,这就是我收到这些错误的原因。
我在创建makefile方面有点弱,所以如果有人可以查看我并告诉我makefile是否存在导致这些问题的明显问题,我将非常感激。这是我的makefile
C = g++
DEBUG = -g
CFLAGS = -g -Wall -std=c++11
LFLAGS = -L/usr/local/lib/
INCLUDES = -I/usr/local/
LIBS = -libzmq.la
SRCS = main.cpp NetworkTestServer.cpp
OBJS = $(SRCS:.cpp=.o)
EXECUTABLE = tester
all: $(SRCS) $(EXECUTABLE)
$(EXECUTABLE): $(OBJS)
$(CC) $(EXECUTABLE) -o $(EXECUTABLE) $(LIBS)
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
$(RM) *.o *~ $(EXECUTABLE)
非常感谢
答案 0 :(得分:2)
在我看来,您的LIBS
定义是错误的。
通常,省略lib
部分以及扩展名。所以,试试类似:
LIBS = -lzmq
如果不起作用,请确保此库包含在LFLAGS
变量指定的位置。