问题描述
编译项目源代码时,出现了具体如下:
# 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
解决方法
通过执行下载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如果遇到下面的编译(其中,-lxxx表示链接库文件 libxxx.so)错误表明在编译过程中找不到相应的库文件。
这种错误通常有以下原因:
- 系统缺乏相应的库文件;
- 版本不对应;
- 链接错误的库文件;
- 库文件路径设置问题。
对于前两种情况,可以通过下载安装相应的lib来解决。命令是:
sudo apt install libxxx-dev
以上作者遇到的实际问题为例:提示找不到-lpcap说明找不到libpcap.so需下载安装libpcap-dev”来解决。而下载了“libpcap-dev问题确实迎刃而解。
以后遇到这样的问题,就用这种一般化的方法,对大多数情况应该是有效的。