首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache thrift未定义对apache::thrift::server::TNonblockingServer的引用

Apache thrift未定义对apache::thrift::server::TNonblockingServer的引用
EN

Stack Overflow用户
提问于 2013-03-08 14:54:16
回答 1查看 4K关注 0票数 6

我试图编译一段创建TNonblockingServer的代码,得到以下编译错误。知道出什么问题了吗?

代码语言:javascript
复制
something_server.cpp:(.text+0x1ad): undefined reference to `apache::thrift::server::TNonblockingServer::serve()'
something_server.cpp:(.text+0x1c1): undefined reference to `apache::thrift::server::TNonblockingServer::~TNonblockingServer()'
something_server.cpp:(.text+0x280): undefined reference to `apache::thrift::server::TNonblockingServer::~TNonblockingServer()'

我在安装thrift时执行了这里列出的步骤。http://thrift.apache.org/docs/install/os_x/

这是我的makefile

代码语言:javascript
复制
GEN_SRC := Something.cpp something_constants.cpp something_types.cpp
GEN_OBJ := $(patsubst %.cpp,%.o, $(GEN_SRC))

THRIFT_DIR := /usr/local/include/thrift
BOOST_DIR := /usr/local/include

INC := -I$(THRIFT_DIR) -I$(BOOST_DIR)

.PHONY: all clean

all: something_server something_client

%.o: %.cpp 
    $(CXX) -Wall -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H $(INC) -c $< -o $@ 

something_server: something_server.o $(GEN_OBJ)
    $(CXX) $^ -o $@ -L/usr/local/lib -lthrift 

something_client: something_client.o $(GEN_OBJ)
    $(CXX) $^ -o $@ -L/usr/local/lib -lthrift 

clean: 
    $(RM) *.o something_server something_client
EN

回答 1

Stack Overflow用户

发布于 2016-03-02 20:08:25

正如Dmitry所指出的,如果我们将-lthriftnb添加到编译命令中,它就解决了问题。这些缺失的引用在libthriftnb.so中找到,该文件包含对libevent的引用。所以我不得不在编译命令时包含-levent。如果没有-levent,链接器会生成多条错误消息。其中一些信息如下:

代码语言:javascript
复制
/usr/local/lib/libthriftnb.so: undefined reference to `event_set'
/usr/local/lib/libthriftnb.so: undefined reference to `evbuffer_new'
/usr/local/lib/libthriftnb.so: undefined reference to `evhttp_free'
.
.
.
.
/usr/local/lib/libthriftnb.so: undefined reference to `event_del'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15288395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档