在使用g++ 编译 thrift的时候,返回报错提示:/usr/bin/ld: 找不到 -lthrift
错误代码展示:
[root@master gen-cpp]# g++ -I /usr/local/src/thrift-0.10.0/lib/cpp/src/thrift/ -lthrift RecSys.cpp RecSys_constants.cpp RecSys_types.cpp RecSys_server.skeleton.cpp -o server
/usr/bin/ld: 找不到 -lthrift
collect2: 错误:ld 返回 1
错误原因:
1 系统没有安装相对应的lib
2 相对应的lib版本不对
3 lib(.so档)的symbolic link不正确,没有连结到正确的函式库文件(.so)
解决方法:
(1)先判断在/usr/lib下的相对应的函式库文件(.so)的symbolic link是否正确,若不正确改成正确的连结目标即可解决问题。
(2)若不是symbolic link的问题引起,而是系统缺少相对应的lib安装lib即可解决。
(3)如何安装缺少的lib
直接在命令行输入
# locate lib***
显示出文件所在路径,
然后在命令行:
# ln -s 文件路径/文件名 /usr/lib/文件名
在thrift目录下使用命令查找libthrift.so文件
[root@master thrift-0.10.0]# find ./ -name libthrift*
./lib/cpp/.libs/libthrift-0.10.0.so
./lib/cpp/.libs/libthrift.so
./lib/cpp/.libs/libthrift.a
... ...
创建软连接:
[root@master thrift-0.10.0]# ln -s /usr/local/src/thrift-0.10.0/lib/cpp/.libs/libthrift.so /usr/lib/libthrift.so
参数解释:
-I:指定解析用头文件
-o:编译生成的文件名
关注公众号,获取最新消息