使用libnet而不编译的c ++代码

时间:2011-09-28 06:58:53

标签: c++ libnet

我正在尝试编译我的libnet脚本并收到此错误:

[root@whyme]# gcc -Wall `libnet-config --defines` mysocket.cc -o mysocket `libnet-config --libs` -lpcap -lnet
/tmp/ccUPbuVg.o: In function `main':
mysocket.cc:(.text+0x1e): undefined reference to `net_init'
mysocket.cc:(.text+0x2a): undefined reference to `net_loadconfig'
mysocket.cc:(.text+0x35): undefined reference to `net_detectdrivers'
mysocket.cc:(.text+0x40): undefined reference to `net_initdrivers'
mysocket.cc:(.text+0x54): undefined reference to `net_openconn'
mysocket.cc:(.text+0x83): undefined reference to `net_listen'
mysocket.cc:(.text+0xbe): undefined reference to `net_poll_listen'
mysocket.cc:(.text+0xd2): undefined reference to `net_closeconn'
mysocket.cc:(.text+0xf1): undefined reference to `net_receive_rdm'
mysocket.cc:(.text+0x11b): undefined reference to `net_query_rdm'

我没有粘贴我的代码,因为这看起来与链接对象有关。

2 个答案:

答案 0 :(得分:0)

你能检查一下“libnet-config --libs”返回的内容吗?

它可能返回错误,从而阻止链接器找到libnet库。确保说“-L XXXX”的部分指向libnet库所在的目录。

答案 1 :(得分:0)

我能够编译&使用您的确切命令执行此源文件(仅更改文件名):https://github.com/repolho/Libnet-1.1-tutorial-examples/blob/master/01_init.c

因此我怀疑问题出在你的来源中。大多数libnet函数名称的形式为libnet_ [funcname],但在链接器错误中,我看到了net_ [funcname]形式的名称。

我还注意到你手动插入-lnet。在我的系统上,-lnet是libnet-config --libs的整个输出,所以如果你确实需要手动指定它是多余的。它没有害处,但下次你可以输入更少的字符。 :)