/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”之后问题确实迎刃而解了。 

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

引用\[1\]中提到,当出现"/usr/bin/ld: cannot find -lcblas"和"/usr/bin/ld: cannot find -latlas"的错误时,可以尝试使用locate命令来查找相关的链接库文件。在终端输入"locate libcblas"和"locate latlas"来查找这两个库文件的位置。然后,根据找到的位置,使用ln命令创建软链接,将库文件链接到正确的位置。例如,使用以下命令创建链接: sudo ln -s /path/to/libcblas.so /usr/lib/libcblas.so sudo ln -s /path/to/libatlas.so /usr/lib/libatlas.so 这样,链接器就能够找到所需的库文件,解决"/usr/bin/ld: cannot find -lcblas"和"/usr/bin/ld: cannot find -latlas"的错误。 #### 引用[.reference_title] - *1* [/usr/bin/ld: cannot find -l**** 问题解决办法](https://blog.youkuaiyun.com/qq_45467083/article/details/108805143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [解决编译代码出现/usr/bin/ld: cannot find -luuid错误 .](https://blog.youkuaiyun.com/mimicock1234/article/details/7402453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝天居士

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

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

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

打赏作者

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

抵扣说明:

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

余额充值