[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:29924] Kernel 2.4.9 でのコンパイル・エラー
こんにちは。島田です。
ご存知かもしれませんが、Kernel 2.4.9 で次のようなコンパイル・エラーが
出ます。
まず、net/drivers/rrunner.c で、次のエラーが出てコンパイルがとまります。
gcc -D__KERNEL__ -I/usr/src/linux-2.4.9/include -Wall
-Wstrict-prototypes -Wno-t
rigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mprefe
rred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include /usr/src/linux
-2.4.9/include/linux/modversions.h -c -o rrunner.o rrunner.c
rrunner.c:1241: macro `min' used with only 2 args
rrunner.c:1252: macro `min' used with only 2 args
rrunner.c: In function `rr_dump':
rrunner.c:1241: parse error before `__x'
rrunner.c:1241: `__x' undeclared (first use in this function)
rrunner.c:1241: (Each undeclared identifier is reported only once
rrunner.c:1241: for each function it appears in.)
rrunner.c:1241: `__y' undeclared (first use in this function)
rrunner.c:1252: parse error before `__x'
rrunner.c:1221: warning: `len' might be used uninitialized in this function
<linux/kernel.h> で min マクロが、
#define min(type,x,y) \
({ type __x = (x), __y = (y); __x < __y ? __x: __y; })
と define されているのに、rrunner.c で、
len = min(0x80, rrpriv->tx_skbuff[cons]->len);
のように利用されているためのようです。
len = min(int, 0x80, rrpriv->tx_skbuff[cons]->len);
と書き直したらここは無事コンパイルできましたが、今度は fs/ntfs/unistr.c
で次のエラーが出ます。
gcc -D__KERNEL__ -I/usr/src/linux-2.4.9/include -Wall
-Wstrict-prototypes -Wno-t
rigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mprefe
rred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include /usr/src/linux
-2.4.9/include/linux/modversions.h -DNTFS_VERSION=\"1.1.16\" -c -o unistr.o un
istr.c
unistr.c: In function `ntfs_collate_names':
unistr.c:99: warning: implicit declaration of function `min'
unistr.c:99: parse error before `unsigned'
unistr.c:99: parse error before `)'
unistr.c:97: warning: `c1' might be used uninitialized in this function
unistr.c: At top level:
unistr.c:118: parse error before `if'
unistr.c:123: warning: type defaults to `int' in declaration of `c1'
unistr.c:123: `name1' undeclared here (not in a function)
unistr.c:123: warning: data definition has no type or storage class
unistr.c:124: parse error before `if'
たとえば、
for (cnt = 0; cnt < min(unsigned int, name1_len, name2_len); ++cnt)
の行で、今度は最初の引数の値 unsigned int が解釈できないようです。それに、
implicit declaration だから、ほかにも min マクロか関数が定義されているの
でしょう。
これ以上は試していませんが、何が悪いのでしょうか。Woody を使っていて、
GCC は 2.95.4 20010902 です。
よろしくお願いいたします。
----------------------------------------------------------------------
Mail: shimaden@xxxxxxxxx
Home Page: http://www.din.or.jp/~shimaden/
島田博幸
Hiroyuki Shimada
----------------------------------------------------------------------