【问题标题】:Apache thrift undefined reference to apache::thrift::server::TNonblockingServerApache thrift 未定义对 apache::thrift::server::TNonblockingServer 的引用
【发布时间】:2013-02-23 16:00:22
【问题描述】:

我正在尝试编译一段创建 TNonblockingServer 的代码,但出现以下编译错误。知道有什么问题吗?

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/

这是我的生成文件

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

【问题讨论】:

  • 由于没有链接库,这看起来像是一个普通的链接问题。你是如何编译和链接的?
  • 我已经编辑了问题并添加了我的 makefile。
  • 尝试将 -lthriftnb 库添加到您的 make 文件中
  • 谢谢德米特里,你的评论帮了大忙:-)

标签: c++ rpc thrift


【解决方案1】:

正如 Dmitry 所指出的,如果我们在编译命令中添加-lthriftnb,就可以解决问题。这些缺失的引用可在 libthriftnb.so 中找到。此文件包含对 libevent 的引用。所以我必须在编译命令中包含-levent。没有-levent 链接器会生成多个错误消息。部分留言如下-

/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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2020-12-02
    • 2021-10-05
    • 2018-01-21
    • 2013-10-16
    • 1970-01-01
    • 2015-08-31
    相关资源
    最近更新 更多