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

在使用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:编译生成的文件名

关注公众号,获取最新消息

阿布的进击