Hi.
I'm following CLFS to make a custom Linux distro, and know I'm trying to
cross-compile GRUB to finalize my installation, but I'm having some
errors that I cannot fix, and I can't find suitable information to solve it.
I'm using GRUB-0.97, applied the 'grub-0.97-fixes-1.patch' patch, and
using the toolchain as described by CLFS (gcc-4.1.1).
This is my configure and make output:
----- configure ----------------
patching file aclocal.m4
patching file ChangeLog
patching file configure
patching file configure.ac
patching file docs/grub.8
patching file docs/grub.texi
patching file docs/multiboot.texi
patching file grub/asmstub.c
patching file grub/main.c
patching file lib/device.c
patching file stage2/asm.S
patching file stage2/boot.c
patching file stage2/builtins.c
patching file stage2/char_io.c
patching file stage2/cmdline.c
patching file stage2/freebsd.h
patching file stage2/graphics.c
patching file stage2/graphics.h
patching file stage2/Makefile.am
patching file stage2/shared.h
patching file stage2/stage2.c
patching file stage2/term.h
patching file THANKS
patching file util/grub-install.in
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for i586-linux-strip... i586-linux-strip
checking build system type... i686-pc-linux-gnulibc1
checking host system type... i586-pc-linux-gnu
checking whether to enable maintainer-specific portions of Makefiles... no
checking for i586-linux-gcc... i586-linux-gcc
checking for i586-linux-gcc... (cached) i586-linux-gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... yes
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether i586-linux-gcc accepts -g... yes
checking for i586-linux-gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of i586-linux-gcc... gcc3
checking dependency style of i586-linux-gcc... (cached) gcc3
checking for i586-linux-ranlib... i586-linux-ranlib
checking whether optimization for size works... yes
checking whether gcc has -fno-stack-protector... yes
checking whether -Wundef works... yes
checking whether -falign-loops works... yes
checking for i586-linux-objcopy... i586-linux-objcopy
checking if C symbols get an underscore after compilation... no
checking whether i586-linux-objcopy works for absolute addresses... yes
checking whether addr32 must be in the same line as the instruction... yes
checking for .code16 addr32 assembler support... yes
checking whether an absolute indirect call/jump must not be prefixed
with an asterisk... no
checking if start is defined by the compiler... no
checking if _start is defined by the compiler... yes
checking if __bss_start is defined by the compiler... yes
checking if _edata is defined by the compiler... yes
checking if edata is defined by the compiler... yes
checking if end is defined by the compiler... yes
checking if _end is defined by the compiler... yes
checking for opendisk in -lutil... no
checking for wgetch in -lncurses... yes
checking how to run the C preprocessor... i586-linux-gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking ncurses/curses.h usability... no
checking ncurses/curses.h presence... no
checking for ncurses/curses.h... no
checking ncurses.h usability... no
checking ncurses.h presence... no
checking for ncurses.h... no
checking curses.h usability... no
checking curses.h presence... no
checking for curses.h... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating stage1/Makefile
config.status: creating stage2/Makefile
config.status: creating docs/Makefile
config.status: creating lib/Makefile
config.status: creating util/Makefile
config.status: creating grub/Makefile
config.status: creating netboot/Makefile
config.status: creating util/grub-image
config.status: creating util/grub-install
config.status: creating util/grub-md5-crypt
config.status: creating util/grub-terminfo
config.status: creating util/grub-set-default
config.status: creating config.h
config.status: executing depfiles commands
------------- make ----------------------------------
make[1]: Entering directory
`/home/joao.ramos/skyguardian/bootldr/grub/grub-0.97'
Making all in netboot
make[2]: Entering directory
`/home/joao.ramos/skyguardian/bootldr/grub/grub-0.97/netboot'
if i586-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../stage2 -I../stage1
-march=i586 -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith
-falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -Os
-fno-stack-protector -fno-builtin -nostdinc -DFSYS_TFTP=1
-DINCLUDE_EEPRO100=1 -DCONGESTED=1 -DCONFIG_PCI_DIRECT=1
-DNE_SCAN=0x280,0x300,0x320,0x340 -DWD_DEFAULT_MEM=0xCC000 -g -MT
libdrivers_a-config.o -MD -MP -MF ".deps/libdrivers_a-config.Tpo" -c -o
libdrivers_a-config.o `test -f 'config.c' || echo './'`config.c; \
then mv -f ".deps/libdrivers_a-config.Tpo"
".deps/libdrivers_a-config.Po"; else rm -f
".deps/libdrivers_a-config.Tpo"; exit 1; fi
if i586-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../stage2 -I../stage1
-march=i586 -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith
-falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -Os
-fno-stack-protector -fno-builtin -nostdinc -DFSYS_TFTP=1
-DINCLUDE_EEPRO100=1 -DCONGESTED=1 -DCONFIG_PCI_DIRECT=1
-DNE_SCAN=0x280,0x300,0x320,0x340 -DWD_DEFAULT_MEM=0xCC000 -g -MT
libdrivers_a-fsys_tftp.o -MD -MP -MF ".deps/libdrivers_a-fsys_tftp.Tpo"
-c -o libdrivers_a-fsys_tftp.o `test -f 'fsys_tftp.c' || echo
'./'`fsys_tftp.c; \
then mv -f ".deps/libdrivers_a-fsys_tftp.Tpo"
".deps/libdrivers_a-fsys_tftp.Po"; else rm -f
".deps/libdrivers_a-fsys_tftp.Tpo"; exit 1; fi
if i586-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../stage2 -I../stage1
-march=i586 -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith
-falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -Os
-fno-stack-protector -fno-builtin -nostdinc -DFSYS_TFTP=1
-DINCLUDE_EEPRO100=1 -DCONGESTED=1 -DCONFIG_PCI_DIRECT=1
-DNE_SCAN=0x280,0x300,0x320,0x340 -DWD_DEFAULT_MEM=0xCC000 -g -MT
libdrivers_a-main.o -MD -MP -MF ".deps/libdrivers_a-main.Tpo" -c -o
libdrivers_a-main.o `test -f 'main.c' || echo './'`main.c; \
then mv -f ".deps/libdrivers_a-main.Tpo"
".deps/libdrivers_a-main.Po"; else rm -f ".deps/libdrivers_a-main.Tpo";
exit 1; fi
main.c:57: error: static declaration of 'bootp_data' follows non-static
declaration
./etherboot.h:534: error: previous declaration of 'bootp_data' was here
main.c:59: error: static declaration of 'end_of_rfc1533' follows
non-static declaration
./etherboot.h:536: error: previous declaration of 'end_of_rfc1533' was here
main.c: In function 'udp_transmit':
main.c:231: warning: pointer targets in passing argument 1 of
'eth_transmit' differ in signedness
main.c:276: warning: pointer targets in passing argument 1 of
'eth_transmit' differ in signedness
main.c:290: warning: pointer targets in passing argument 1 of
'eth_transmit' differ in signedness
main.c: In function 'tftp':
main.c:462: warning: pointer targets in passing argument 1 of 'fnc'
differ in signedness
main.c: In function 'rarp':
main.c:509: warning: pointer targets in passing argument 1 of
'eth_transmit' differ in signedness
main.c: In function 'udpchksum':
main.c:729: warning: dereferencing type-punned pointer will break
strict-aliasing rules
main.c: In function 'await_reply':
main.c:893: warning: pointer targets in passing argument 1 of
'grub_memcmp' differ in signedness
main.c:895: warning: pointer targets in passing argument 1 of
'grub_memcmp' differ in signedness
main.c:925: warning: pointer targets in passing argument 1 of
'decode_rfc1533' differ in signedness
main.c: In function 'decode_rfc1533':
main.c:973: warning: pointer targets in passing argument 1 of
'grub_memcmp' differ in signedness
main.c:973: warning: pointer targets in passing argument 2 of
'grub_memcmp' differ in signedness
main.c:984: warning: pointer targets in passing argument 1 of
'grub_memcmp' differ in signedness
main.c:984: warning: pointer targets in passing argument 2 of
'grub_memcmp' differ in signedness
main.c:1057: warning: pointer targets in passing argument 1 of
'grub_memcmp' differ in signedness
main.c:1057: warning: pointer targets in passing argument 2 of
'grub_memcmp' differ in signedness
make[2]: *** [libdrivers_a-main.o] Error 1
make[2]: Leaving directory
`/home/joao.ramos/skyguardian/bootldr/grub/grub-0.97/netboot'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory
`/home/joao.ramos/skyguardian/bootldr/grub/grub-0.97'
make: *** [all] Error 2
The problem seems to be in a static declaration in netboot/main.c
(static struct bootp_t bootp_data) when the header 'etherboot.h' defines
this struct as non-static, and without a typedef keyword (struct bootp_t
{ ....... } ).
Can anyone help?
Thank you,
João Ramos
_______________________________________________
Clfs-support mailing list
[email protected]
http://lists.cross-lfs.org/cgi-bin/mailman/listinfo/clfs-support