[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:51035] 本来 i386 のを amd64 で使うとき
渡辺と申します。
amd64 アーキテクチャの Etch を使わせていただいております。
ありがとうございます。
$ uname -a
Linux hoge 2.6.18-6-amd64 #1 SMP Tue Aug 19 04:30:56 UTC 2008 x86_64 GNU/Linux
こちらのメーリングリストで質問するには、ちょっと筋違いな気が
するので、問題があったら、ご指摘ください。
(公式パッケージには無い)jpcap
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
を使いたかったのですが、i386 用の deb パッケージしか用意され
ていないようだったので、ソースからビルドしました。
その際に、
<パッチ>
--- jpcap-0.7/src/c/Makefile.orig 2008-09-22 23:53:03.000000000 +0900
+++ jpcap-0.7/src/c/Makefile 2008-09-22 23:54:06.000000000 +0900
@@ -46,7 +46,7 @@
libjpcap.so: JpcapCaptor.c JpcapSender.c JpcapWriter.c\
packet_arp.c packet_datalink.c packet_icmp.c packet_ip.c\
packet_ipv6.c packet_tcp.c packet_udp.c
- $(CC) $(COMPILE_OPTION) -I$(JNI_INCLUDE) -I$(JNI_INCLUDE2)\
+ $(CC) -D_FILE_OFFSET_BITS=64 -fPIC $(COMPILE_OPTION) -I$(JNI_INCLUDE) -I$(JNI_INCLUDE2)\
-I$(PCAP_INCLUDE)\
JpcapCaptor.c JpcapSender.c JpcapWriter.c\
packet_arp.c packet_datalink.c packet_icmp.c packet_ip.c\
</パッチ>
というパッチを作って当てて make したところ、
<メッセージ from="make">
JpcapCaptor.c: In function ‘Java_jpcap_JpcapCaptor_processPacket’:
JpcapCaptor.c:449: warning: cast to pointer from integer of different size
JpcapCaptor.c: In function ‘Java_jpcap_JpcapCaptor_loopPacket’:
JpcapCaptor.c:468: warning: cast to pointer from integer of different size
JpcapCaptor.c: In function ‘dispatcher_handler’:
JpcapCaptor.c:682: warning: cast from pointer to integer of different size
packet_icmp.c: In function ‘analyze_icmp’:
packet_icmp.c:81: warning: cast to pointer from integer of different size
packet_icmp.c:83: warning: cast from pointer to integer of different size
</メッセージ>
という警告メッセージが出たのですが、これは大丈夫なもの
でしょうか?
JNI や C 言語に対する私の理解不足で、お恥ずかしながら、
よくわかりませんでした。
ビルドされた libjpcap.so を /home/aUser/lib/ にコピーして、
$ echo $LD_LIBRARY_PATH
:/home/aUser/lib
の状態で、一応、使えるようではありますけれど。
-fPIC -m32 でビルドしてみたときには上記のようなメッセージは
出なかったので、何か amd64 で使うために必要なオプションがまだ
指定できていないのか、あるいは、ソースコード自体に何らかの
パッチを当てる必要があるのではないか、と不安になった次第です。
ところで、link-type が一般的な Ethernet などでない
LINUX_SLL (Linux cooked)という link-type に対して jpcap を
使うと、java.lang.InstantiationException が投げられるよう
ですね。(それとも、amd64 で実行したから?)
# 時間ができたら、絶対、C と C++ を勉強し直すぞ...
# ...いつの日か(^^;