linux-l: defrag.c

Ralf Baerwaldt rade at rade2.bancos.com
Di Mai 19 11:33:43 CEST 1998


Hallo !

Ich will zum ersten Mal unter Linux ein Programm
uebersetzen und habe auch wenig Erfahrung mit C.
Nun komme ich an einer Fehlermeldung nicht weiter:
--------------------------
/tmp/defrag/defrag-0.6 > make
gcc -Wall -O2 -fomit-frame-pointer -DEXT2FS -c -o defrag.ext2.o defrag.c
defrag.c: In function `walk_inode':
defrag.c:396: warning: passing arg 1 of `walk_zone' from incompatible pointer type
defrag.c:397: warning: passing arg 1 of `walk_zone_ind' from incompatible pointer type
defrag.c:398: warning: passing arg 1 of `walk_zone_dind' from incompatible pointer type
defrag.c:400: warning: passing arg 1 of `walk_zone_tind' from incompatible pointer type
defrag.c: In function `read_fixed_zones':
defrag.c:422: `EXT2_FIRST_INO' undeclared (first use this function)
defrag.c:422: (Each undeclared identifier is reported only once
defrag.c:422: for each function it appears in.)
defrag.c: In function `sort_inodes':
defrag.c:666: `EXT2_FIRST_INO' undeclared (first use this function)
defrag.c:653: warning: `i' might be used uninitialized in this function
make: *** [defrag.ext2.o] Error 1
--------------------------

Ich habe die "warning" uebersprungen und mich nur um den Fehler
   defrag.c:422: `EXT2_FIRST_INO' undeclared (first use this function)
gekuemmert.

In defrag.c steht in Zeile 28:
   #include "defrag.h"
In defrag.h steht in Zeile 33:
   #ifdef EXT2FS
   #include "ext2.h"
   #endif
In ext2.h steht in Zeile 16:
   #include <linux/ext2_fs.h>
und letztendlich steht in /usr/include/linux/ext2_fs.h :
   #define EXT2_GOOD_OLD_FIRST_INO 11
	...
   #ifdef __KERNEL__
   #define EXT2_ADDR_PER_BLOCK_BITS(s) ((s)->u.ext2_sb.s_addr_per_block_bits)
   #define EXT2_INODE_SIZE(s)      ((s)->u.ext2_sb.s_inode_size)
   #define EXT2_FIRST_INO(s)       ((s)->u.ext2_sb.s_first_ino)
   #else
   #define EXT2_GOOD_OLD_REV   0   /* The good old (original) format */
   #define EXT2_INODE_SIZE(s)  (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
                 EXT2_GOOD_OLD_INODE_SIZE : \
                 (s)->s_inode_size)
   #define EXT2_FIRST_INO(s)   (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
                 EXT2_GOOD_OLD_FIRST_INO : \
                 (s)->s_first_ino)
   #endif
	...
   #define EXT2_GOOD_OLD_REV   0
--------------------------

Folgendes habe ich probiert:
   1. in ext2_fs.h die Zeile "#define EXT2_GOOD_OLD_REV   0" vor
      "#ifdef __KERNEL__" zu verschieben.
   2. in defrag.h "#ifdef EXT2FS" geloescht (und "endif" natuerlich).
   3. in ext2_fs.h den Parameter EXT2_GOOD_OLD_REV durch 0 ersetzt.

Danach jedesmal makemake und make aufgerufen. Der Fehler bleibt
jedoch.

Was muss ich machen ?


rade
(e-mail: rade at bancos.com)





Mehr Informationen über die Mailingliste linux-l