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