在64位Debian上交叉编译32位时找不到Libpcap

Libpcap not found when cross-compiling 32-bit on a 64-bit Debian

本文关键字:找不到 Libpcap 32位 交叉编译 64位 Debian      更新时间:2023-10-16

我正试图在64位Debian Stretch上编译一个32位应用程序。我已经用这种方式成功编译了其他几个应用程序,但有一个使用pcap库的应用程序给我带来了问题。在我的平台上,似乎没有这个库的32位版本。

问题描述

当我尝试链接我的应用程序时,如下所示:

g++ (...objectfiles-and-options...) -m32 -o myapp -lpthread -lpcap

我得到错误

/usr/bin/ld: cannot find -lpcap

我检查了一下,在/usr/lib32中确实没有libpcap.so(或其变体)。然而,我正在使用的所有其他库都在那里(比如libpthread)。我试图创建到64位pcap库的软链接,以防它们应该是多平台兼容的,但这只会导致"在搜索-lpcap时跳过不兼容的/usr/lib32/libpcap.so"。

我已经安装了libpcap-dev、libc6-dev-i386、gcc-multilib和g++-multlib(显然,因为交叉编译对于所有不使用libpcap的应用程序来说都很好)。我怀疑应该有一个libpcap-dev-i386我可以安装,但似乎没有。

也许我应该提到的是,该应用程序成功地编译和链接为64位。

有人知道我在这里缺了什么吗?

您可以自己编译libpcap。这可能是比依赖软件包更好的解决方案。使用针对32位体系结构的configure,然后让编译器LDFLAGS指向您的lib或将其安装在/usr/lib32/中