[Armadillo:04207] Re: strace/tcpdumpのmakeエラー

mizo email@hidden
2009年 4月 21日 (火) 15:05:00 JST


溝渕です。

風我成 望 wrote:
> 風我成と申します。長いテキストですんません。 
> 
> 表記について、何か情報をお持ちの方、アドバイス頂けると助かります。 
> 環境:VMWareでATDE2に付属のLinuxのイメージを使い、atmark-distとkernelを展開して作っています。 
> 
> kernel/userlandの再構築と、wireless-extention/RT73のWLANドライバ組み込みまでは 
> 問題なく動作したのですが、運用環境用にとファイルシステムにツールを 
> 追加したら、かなりのエラーが出てしまいました。 
> (armadilloでこんだけこまめにエラーが出たのは初めてでした…) 
> cronでもlspciとかでも出てしまうのですが、 

cron, lspciはすでにatmark-distに存在するものを使用しましたか?
それとも自分でatmark-distに組み込んだものでしょうか?

lspciに関してはArmadilloにはデフォルトで含まれていませんが、busyboxの
crondに関してはビルドを確認しています。

また、メーリングリストへ投稿される場合は、
- atmark-distやlinux-kernelのバージョン
- ATDE2のバージョン
- 使用しているボード(Armadillo-500等)
を記述していただけると答えやすくなる場合があります。

> まず、上記の二つについてアドバイス頂ければ助かります。 
> (tcpdumpに関してはpcap-debugのエラーが出るので別途ソースを用意した方もいらっしゃるようですが…) 
> 
> 
> strace のmakeのエラー 
> 以下のような宣言のエラーが出ます。ユーザーランド全体でも、 
> 単体でも同じエラーが出ます。 
> 使用していない[st_atim]が無いというエラーですが、 
> file.cの中には[st_atime]はありますが、[st_atim]は使われてません。 
> 
> email@hidden:/atmark-dist/user/strace$ vi Makefile 
> email@hidden:/atmark-dist/user/strace$ make 

atmark-dist/Makefile
を経由しないでビルドした場合、いくつかのMakefile内の変数が定義されません。

この場合ですと、arm-linux-gccが呼ばれずに、PCのコンパイラが使用されてい
ます。

すでにオブジェクトファイル等が生成されてある可能性があるため、一度clean
することをおすすめします。

> cc -Wall -DHAVE_CONFIG_H   -I. -Ilinux/ -I./linux/ -Ilinux -I./linux -D_GNU_SOURCE -D__USE_BSD -D__USE_POSIX199309 -c file.c 
> file.c: In function ‘realprintstat’: 
> file.c:737: error: ‘struct stat’ has no member named ‘st_atim’ 
> file.c:738: error: ‘struct stat’ has no member named ‘st_mtim’ 
> file.c:739: error: ‘struct stat’ has no member named ‘st_ctim’ 
> file.c: In function ‘convertoldstat’: 
> file.c:915: error: ‘struct stat’ has no member named ‘st_atim’ 
> file.c:915: error: ‘const struct __old_kernel_stat’ has no member named ‘st_atim’ 
> file.c:916: error: ‘struct stat’ has no member named ‘st_mtim’ 
> file.c:916: error: ‘const struct __old_kernel_stat’ has no member named ‘st_mtim’ 
> file.c:917: error: ‘struct stat’ has no member named ‘st_ctim’ 
> file.c:917: error: ‘const struct __old_kernel_stat’ has no member named ‘st_ctim’ 
> make: *** [file.o] エラー 1 
> 
> ユーザーランド全体で実施すると以下の文も出ますが、 
> 下記の三つはわざとなのか実行権限が付与されてませんでした。 
> 他の.*ファイルはすべて付いてます。 
> make[2]: ディレクトリ `/atmark-dist/user/hwclock' から出ます 
> /bin/sh: extensions/.dccp-test: 許可がありません 
> /bin/sh: extensions/.layer7-test: 許可がありません 
> /bin/sh: extensions/.statistic-test: 許可がありません 

実行権限の付与し忘れだと思われます。

これらのスクリプトは呼び出されてはいますが、実行の結果何も行なわないため、

- 実行権限を付与する
- 上記3ファイルを削除する

のどちらの対応でも構いません。

> ○tcpdump のmakeのエラー 
> 
> 
> email@hidden:/atmark-dist/user/strace$ cd ../tcpdump/ 
> email@hidden:/atmark-dist/user/tcpdump$ make 

strace同様の対応をしてみてください。

上記対応を行なってもpcap.hが発見できない場合は、
libpcap0.8-dev-arm-cross
がインストールされているかどうかを確認してみてください。

> cc -I.  -Ilinux-include  -DHAVE_FCNTL_H=1 -DHAVE_MALLOC_H=1 -DHAVE_MEMORY_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_NET_SLIP_H=1 -DHAVE_VFPRINTF=1 -DHAVE_STRCASECMP=1 -DHAVE_SETLINEBUF=1 -DRETSIGTYPE=void -DRETSIGVAL= -D__USE_BSD=1 -c ./tcpdump.c 
> ./tcpdump.c:43:18: error: pcap.h: そのようなファイルやディレクトリはありません 
> ./tcpdump.c:78: warning: ‘struct bpf_program’ declared inside parameter list 
> ./tcpdump.c:78: warning: its scope is only this definition or declaration, which is probably not what you want 
> ./tcpdump.c:88: error: expected specifier-qualifier-list before ‘pcap_handler’ 
> ./tcpdump.c:93: warning: excess elements in struct initializer 
> 中略 
> ./tcpdump.c:99: error: ‘DLT_FDDI’ undeclared here (not in a function) 
> ./tcpdump.c:99: warning: excess elements in struct initializer 
> 中略 
> ./tcpdump.c:103: warning: excess elements in struct initializer 
> ./tcpdump.c:103: warning: (near initialization for ‘printers[10]’) 
> ./tcpdump.c:107: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘lookup_printer’ 
> ./tcpdump.c:119: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token 
> ./tcpdump.c: In function ‘main’: 
> ./tcpdump.c:129: error: ‘bpf_u_int32’ undeclared (first use in this function) 
> ./tcpdump.c:129: error: (Each undeclared identifier is reported only once 
> ./tcpdump.c:129: error: for each function it appears in.) 
> ./tcpdump.c:129: error: expected ‘;’ before ‘localnet’ 
> ./tcpdump.c:131: error: ‘pcap_handler’ undeclared (first use in this function) 
> ./tcpdump.c:131: error: expected ‘;’ before ‘printer’ 
> ./tcpdump.c:132: error: storage size of ‘fcode’ isn’t known 
> ./tcpdump.c:135: error: ‘PCAP_ERRBUF_SIZE’ undeclared (first use in this function) 
> ./tcpdump.c:285: error: ‘pd’ undeclared (first use in this function) 
> ./tcpdump.c:288: error: ‘localnet’ undeclared (first use in this function) 
> ./tcpdump.c:289: error: ‘netmask’ undeclared (first use in this function) 
> ./tcpdump.c:294: warning: assignment makes pointer from integer without a cast 
> ./tcpdump.c:338: error: ‘pcap_dumper_t’ undeclared (first use in this function) 
> ./tcpdump.c:338: error: ‘p’ undeclared (first use in this function) 
> ./tcpdump.c:341: error: ‘printer’ undeclared (first use in this function) 
> ./tcpdump.c:341: error: ‘pcap_dump’ undeclared (first use in this function) 
> ./tcpdump.c: In function ‘cleanup’: 
> ./tcpdump.c:365: error: storage size of ‘stat’ isn’t known 
> ./tcpdump.c:368: error: ‘pd’ undeclared (first use in this function) 
> ./tcpdump.c:368: warning: comparison between pointer and integer 
> ./tcpdump.c: At top level: 
> ./tcpdump.c:439: warning: function definition has qualified void return type 
> make: *** [tcpdump.o] エラー 1 
> email@hidden:/atmark-dist/user/tcpdump$ 
> 
> 
> 開発環境の中には、pcap.hは下記があり、上の三つは結局同じものでした。 
> 
> email@hidden:/atmark-dist$ find ./ -name pcap.h 
> ./include/include/pcap.h 
> ./include/pcap.h 
> ./lib/libpcap/pcap.h 
> ./user/snort/src/win32/WIN32-Includes/WinPCAP/pcap.h 
> ./user/nessus/nessus-libraries/libpcap-nessus/pcap.h 
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 



armadillo メーリングリストの案内