/usr/bin/ld: cannot find -lpcap问题的解决及广义化解决方法

问题描述

项目工程源码在进行编译时,出现了“/usr/bin/ld: cannot find -lpcap”的错误,具体如下所示:

# make
……
/usr/bin/ld: cannot find -lpcap
collect2: error: ld returned 1 exit status
Makefile:10: recipe for target 'tx-temp' failed
make: *** [tx-temp] Error 1

解决方法

通过执行“sudo apt install libpcap-dev”下载libpcap.so库即可解决该问题。如下所示:

# sudo apt install libpcap-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libpcap0.8 libpcap0.8-dev
The following NEW packages will be installed:
  libpcap-dev libpcap0.8-dev
The following packages will be upgraded:
  libpcap0.8
1 upgraded, 2 newly installed, 0 to remove and 284 not upgraded.
Need to get 339 kB of archives.
After this operation, 750 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpcap0.8 amd64 1.8.1-6ubuntu1.18.04.2 [118 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpcap0.8-dev amd64 1.8.1-6ubuntu1.18.04.2 [218 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpcap-dev amd64 1.8.1-6ubuntu1.18.04.2 [3,480 B]
Fetched 339 kB in 2s (173 kB/s)
(Reading database ... 110400 files and directories currently installed.)
Preparing to unpack .../libpcap0.8_1.8.1-6ubuntu1.18.04.2_amd64.deb ...
Unpacking libpcap0.8:amd64 (1.8.1-6ubuntu1.18.04.2) over (1.8.1-6ubuntu1) ...
Selecting previously unselected package libpcap0.8-dev:amd64.
Preparing to unpack .../libpcap0.8-dev_1.8.1-6ubuntu1.18.04.2_amd64.deb ...
Unpacking libpcap0.8-dev:amd64 (1.8.1-6ubuntu1.18.04.2) ...
Selecting previously unselected package libpcap-dev:amd64.
Preparing to unpack .../libpcap-dev_1.8.1-6ubuntu1.18.04.2_amd64.deb ...
Unpacking libpcap-dev:amd64 (1.8.1-6ubuntu1.18.04.2) ...
Setting up libpcap0.8:amd64 (1.8.1-6ubuntu1.18.04.2) ...
Setting up libpcap0.8-dev:amd64 (1.8.1-6ubuntu1.18.04.2) ...
Setting up libpcap-dev:amd64 (1.8.1-6ubuntu1.18.04.2) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

再次编译,此问题不再出现,说明问题已得到解决。 

推而广之

将此问题一般化,可以得出以下广义解决方法,也可以说是技巧:

在Linux下编译时,如果遇到“/usr/bin/ld: cannot find -lxxx”(其中,-lxxx表示链接库文件 libxxx.so)的错误,则说明是编译过程找不到对应的库文件。

一般出现这种错误有以下几种原因:

  • 系统缺乏对应的库文件;
  • 版本不对应;
  • 库文件的链接错误;
  • 库文件路径设置问题。

对于前两种情况,可以通过下载安装相应的lib来解决。命令为:

sudo apt install libxxx-dev

以上边笔者遇到的实际问题为例:提示找不到“-lpcap”,则说明找不到“libpcap.so”,需要下载安装“libpcap-dev”来解决。而下载了“libpcap-dev”之后问题确实迎刃而解了。 

以后再遇到此类问题,就用这种一般化方法,对于大多数情况应该都是行之有效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值