我想使用C ++语言将行放入HBase。我使用thrift-0.9.3
和HBase 1.0.3
。根据{{3}},我已经安装并配置了节俭。
但是当我运行命令时:
g++ -Wall -o hclient main.cpp gen-cpp/Hbase_types.cpp gen-cpp/Hbase_constants.cpp \
gen-cpp/Hbase.cpp -lthrift
它显示错误(cthbase.cpp是我的文件):
cthbase.cpp:14:38: error: thrift/transport/TSocket.h: No such file or directory cthbase.cpp:15:48: error: thrift/transport/TBufferTransports.h: No such file or directory cthbase.cpp:16:45: error: thrift/protocol/TBinaryProtocol.h: No such file or directory In file included from cthbase.cpp:18: ....
我已将gen-cpp和其他lib复制到我的项目文件夹中,但为什么它找不到这些头文件?
答案 0 :(得分:0)
张学友。
您的留言:
嗨,我是一名中国学生,目前正在为HBase学习节俭C ++ 。幸运的是,我找到了你的教程,我按照你的步骤 安装。但是,当我进行编译时会出现问题。 它显示错误: / usr / bin / ld:找不到-lthrift collect2:ld返回1退出状态看起来它没有thrift链接库我无法在我的文件中找到libthrift.so文件 / usr / lib甚至无法在我的电脑中找到。所以我想问你是否可以 解决这个问题。非常感谢您的阅读和 回复。 顺便说一下,我也在stackoverflow提出了这个问题,描述可能更详细。有链接: Error "No such file or directory" occurs when using thrift C++ to connect HBase
祝福。
首先,这是工作示例,复制并自行尝试: https://github.com/alexbod/hclient/
在您的情况下,链接器似乎无法找到thrift库(-lthrift)。
最简单的方法是正确地重新安装Thrift。你在用Debian吗?
<强>卸下:强>
如果您还没有删除安装了thrift的源代码树./configure&amp;&amp;制造&amp;&amp; sudo make install然后只是cd到它和
sudo make uninstall
否则:
git clone <repo>
git checkout <revision you installed>
./configure # if you supplied some additional options to configure while building thrift, add them here too.
sudo make uninstall
<强> Dependies:强>
sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev
<强>安装:强>
wget http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.2/thrift-0.9.2.tar.gz
tar xzvf thrift-0.9.2.tar.gz
$ cd thrift-0.9.2/
./configure
make
sudo make install
然后做与Thrift相关的步骤:
http://www.alexbod.com/c-plus-plus-hbase-client/#starting_thrift