pcap.h を使用する基本的なプログラムをコンパイルしようとしています。iPhone 3GS 用の iPhone 3.1.3 SDK を使用する Mac OSX ボックスで環境をセットアップしました。また、libpcap を ~/libpcap にインストールしたので、-I フラグを使用してヘッダーを探す場所を gcc に伝えることができます。ただし、ファイルが必要なアーキテクチャではないことを示す ld 警告で失敗します。
次の行でコンパイルしています。
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -I /Users/abnev/libpcap/include -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk -o pcap pcap.c -lpcap
生成されるエラーは次のとおりです。
ld: warning: in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/usr/lib/libpcap.dylib, file is not of required architecture
Undefined symbols:
"_pcap_geterr", referenced from:
_main in ccOL3e0B.o
_main in ccOL3e0B.o
"_pcap_open_live", referenced from:
_main in ccOL3e0B.o
"_pcap_next", referenced from:
_main in ccOL3e0B.o
"_pcap_lookupdev", referenced from:
_main in ccOL3e0B.o
"_pcap_setfilter", referenced from:
_main in ccOL3e0B.o
"_pcap_lookupnet", referenced from:
_main in ccOL3e0B.o
"_pcap_close", referenced from:
_main in ccOL3e0B.o
"_pcap_compile", referenced from:
_main in ccOL3e0B.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
armv6 アーキテクチャ (iPhone) 用に libpcap を再コンパイルする必要があると思いますが、./configure オプションをチェックしても役に立ちません。私はこれについてグーグルで検索しようとしましたが、そこにはほとんどありません。