0

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'

これはオブジェクトのリンクに関連しているように見えるため、コードを貼り付けませんでした。

4

2 に答える 2

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の出力全体であるため、必要に応じて手動で指定するのは冗長です。害はありませんが、次回は入力する文字数を減らすことができます。:)

于 2011-09-28T07:43:22.190 に答える
0

"libnet-config --libs" によって何が返されるかを確認できますか?

何か間違ったものを返している可能性があり、リンカーが libnet ライブラリを見つけられない可能性があります。「-L XXXX」と書かれている部分が libnet ライブラリのあるディレクトリを指していることを確認してください。

于 2011-09-28T07:05:15.023 に答える