【问题标题】:Pcap functions have "undefined reference"Pcap 函数具有“未定义的引用”
【发布时间】:2015-01-22 08:26:38
【问题描述】:

我正在尝试完成本教程: http://www.tcpdump.org/pcap.html

现在我已经安装了 pcap(代码提示和所有工作):

sudo apt-get install libpcap-dev

到目前为止,我有以下代码(文件名为 example_pcap.c):

#include <stdio.h>
#include <pcap.h>

int main(int argc, char *argv[]) {
    char *dev, errbuf[PCAP_ERRBUF_SIZE];

    dev = pcap_lookupdev(errbuf);

    return 0;
}

根据我已经看到的许多问题,他们说用这个来编译它:

gcc -lpcap example_pcap.c -o example_pcap

但是我仍然收到以下错误:

example_pcap.c:(.text+0x32): undefined reference to `pcap_lookupdev'

【问题讨论】:

  • @NTN 1. 链接器错误通常与头文件无关,以及 2. 错误消息是not“找不到库”。问题是库在错误的位置 - 它应该在源文件之后
  • 哦,是的,您可以使用 -L/your/path/ 添加新路径来定位 lib

标签: c linux pcap undefined-reference libpcap


【解决方案1】:

【讨论】:

  • gcc example_pcap.c -o example_pcap -lpcap 一样(我添加了-o 以获得一个名称比a.out 更好的可执行文件)
  • 这行得通,但现在我有点困惑。作为我课程的一部分,他们已经给了我制作文件。现在,make 文件在其余部分之前具有 -lpcap 参数。他们是否犯了错误,或者有没有办法确保它保持在开始?
  • 链接 ../build/idsniff gcc -lpcap -lpthread -o ../build/idsniff ../build/analysis.o ../build/dispatch.o ../build/main .o ../build/sniff.o ../build/sniff.o:在函数sniff': /home/yahya/workspace/osCoursework/src/sniff.c:15: undefined reference to pcap_open_live' /home/yahya/workspace/osCoursework/src/sniff.c:27:未定义引用pcap_next' /home/yahya/workspace/osCoursework/src/sniff.c:31: undefined reference to pcap_geterr '
  • @YahyaUddin 是的,他们犯了一个错误。有可能在他们编写课程材料时使用的特定系统上,它碰巧起作用了。
猜你喜欢
  • 2021-04-29
  • 1970-01-01
  • 2013-11-06
  • 2013-12-29
  • 2015-12-06
  • 2019-09-05
  • 2011-09-19
  • 2017-10-17
  • 1970-01-01
相关资源
最近更新 更多