[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++ を勉強し直すぞ...
# ...いつの日か(^^;