proj.c:(.text+0x140): 对“pcap_open_offline”的未定义引用

proj.c:(.text+0x140): undefined reference to `pcap_open_offline'

我正在尝试使用 pcap 函数,但它给我编译器错误:

project.c:(.text+0x140): undefined reference to `pcap_open_offline'

我已经安装了库,并且在编译时我给出了“-lpcap”,正如它在许多论坛中所建议的那样。

请问有什么问题吗?

您需要了解这些论点对 linker 的影响。

我假设您正在使用带有 gcc 的 Linux 系统,使用 ld 作为 linker(请注意,这可能会根据系统和使用的 linker 而改变)。

在这种情况下,-Lpath 告诉 link 人员去哪里寻找你告诉它的库,这些库需要与你的程序一起 linked 以创建最终的二进制。例如 -L/usr/lib.

当您输入例如:

# gcc -L/usr/lib -lcap my_program.c -o my_program

您是在告诉 link 人员将 /usr/lib 追加到查找库的路径列表,并将 link 动态库 "libcap.so" 与您的程序一起追加。

用于定位库的路径的其他修饰符是 LD_LIBRAY_PATH(此环境变量的名称可能会从一个系统更改为另一个系统,请查看您的 linker 的手册)。

当您使用“-lcap”时,您得到的错误看起来与以下事实有关:在 libcap.so 存在的地方找不到路径。将该文件定位到您的系统中并传递参数

-L/path/to/the/directory/that/contain/libcap.so

顺便说一下,尝试 运行 这个在任何其他事情之前并重新编译:

# sudo ldconfig