2010-11-27 11 views
0

Ubuntu 10.10でlibwiresharkのプログラムをコンパイルしようとしています。 パッケージをインストールしました。このパッケージには、/usr/lib/wireshark/usr/include/wiresharkというファイルがインストールされています。libwiresharkに対するコンパイル

私のCソースコードファイルの先頭には、#include <epan/epan.h>ディレクティブが含まれており、次のように私のgccコマンドライン引数は次のとおりです。

/usr/lib/gcc/i686-linux-gnu/4.4.5/include/varargs.h:4: error: #error "GCC no longer implements <varargs.h>." 
/usr/include/wireshark/epan/ftypes/ftypes.h:258: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘union’ 

何:

$ gcc -I/usr/include/wireshark `pkg-config --libs --cflags glib-2.0` -Wall -o test.out test.c -L/usr/lib/wireshark -lwireshark 

はしかし、これには、多くのエラーを返します。これらの問題を解決するために私はしなければなりませんか?

答えて

2

ユーザーにとって使い勝手の悪いパッケージやコード構成の単純なケースのようです。最初にWiresharkの "config"ヘッダーを含める必要があります。

#include <wireshark/config.h> /* needed by epan */ 
#include <epan/epan.h> 

このライブラリからヘッダーを含めるときは必ず最初に実行してください。

どのように知ったのですか?私はepan/proto.hを探して、HAVE_STDARGが設定されていない場合に限り、条件付きでvarargs.hを含むことがわかりました。私はgrepのdで/usr/include/wireshark/であり、この変数がconfig.hに設定されていることがわかったので、それを含める必要があると考えました。

また、libwiresharkとの関連性を満たすために-lwiretapを追加する必要がありました。

wireshark-devの組織内の別のNITは、後者は、実際libwireshark.soた前者シンボリックリンクを提供していても、それはwireshark-commonに(パッケージレベルで)依存しないことです。したがって、wireshark-commonがインストールされていること、または/usr/lib/libwireshark.soとその参照先が存在することを確認する必要があります。

+0

あなたは、チャンピオンです!どうもありがとうございました。すべての正しいファイルが(おそらく以前の試みから)存在するように思われますが、後天性のためにそこに残すのは良いことです。 –

関連する問題