Linux g++ 提示/usr/bin/ld: 找不到 -lthrift 问题解决办法

2020年08月10日 153点热度 1人点赞 0条评论
在使用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:编译生成的文件名

阿布

源自灵魂深处的自我救赎。

文章评论