Kompilacja qemu

Piotr Wawrzyniak wopozka w gazeta.pl
Pią, 15 Paź 2004, 21:43:42 CEST


Próbuję właśnie skompilować sobie qemu z cvsu, no i napotkałem problem, 
którego za bardzo nie umiem rozwiązać. Więc tak:

[piotr w timemachine ~/rpm/rozne/qemu/qemu]$ rpm -q SDL SDL-devel alsa 
alsa-devel gpm gpm-devel slang slang-devel
SDL-1.2.7-1
SDL-devel-1.2.7-1
pakiet alsa nie jest zainstalowany
pakiet alsa-devel nie jest zainstalowany
gpm-1.20.1-6
gpm-devel-1.20.1-6
slang-1.4.9-8
slang-devel-1.4.9-8

[piotr w timemachine ~/rpm/rozne/qemu/qemu]$ make
for d in i386-user i386 i386-softmmu arm-user sparc-user ppc-user ppc-softmmu 
sparc-softmmu; do \
make -C $d all || exit 1 ; \
        done
make[1]: Wejście do katalogu `/home/users/piotr/rpm/rozne/qemu/qemu/i386-user'
make[1]: Nie ma nic do zrobienia w `all'.
make[1]: Opuszczenie katalogu 
`/home/users/piotr/rpm/rozne/qemu/qemu/i386-user'
make[1]: Wejście do katalogu `/home/users/piotr/rpm/rozne/qemu/qemu/i386'
gcc  -static -Wl,-T,/home/users/piotr/rpm/rozne/qemu/qemu/i386-vl.ld  -o 
qemu-fast vl.o osdep.o block.o readline.o monitor.o pci.o console.o 
block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o ide.o ne2000.o 
pckbd.o vga.o sb16.o dma.o oss.o fdc.o mc146818rtc.o serial.o i8259.o i8254.o 
pc.o cirrus_vga.o gdbstub.o sdl.o slirp/cksum.o slirp/if.o slirp/ip_icmp.o 
slirp/ip_input.o slirp/ip_output.o slirp/slirp.o slirp/mbuf.o slirp/misc.o 
slirp/sbuf.o slirp/socket.o slirp/tcp_input.o slirp/tcp_output.o 
slirp/tcp_subr.o slirp/tcp_timer.o slirp/udp.o slirp/bootp.o slirp/debug.o 
slirp/tftp.o libqemu.a  -lm -lz -L/usr/lib -lSDL -lm -ldl -lasound 
-L/usr/X11R6/lib -lX11 -lXext -laa -L/usr/lib -lcaca_pic -lslang -lX11 
-L/usr/X11R6/lib -lpthread -L/usr/lib -Wl,-rpath,/usr/lib -laa -lm 
-L/usr/X11R6/lib -lX11 -lgpm -lslang -lutil
/usr/bin/ld: cannot find -lSDL
^^^^^^^^^^^^^^^^^^^^^^^^^^
collect2: ld returned 1 exit status
make[1]: *** [qemu-fast] Błąd 1
make[1]: Opuszczenie katalogu `/home/users/piotr/rpm/rozne/qemu/qemu/i386'
make: *** [all] Błąd 1

Więc robię tak:
poldek> install SDL-static-1.2.7-1

[piotr w timemachine ~/rpm/rozne/qemu/qemu]$ make
[ciach]
/usr/bin/ld: cannot find -lasound
collect2: ld returned 1 exit status
make[1]: *** [qemu-fast] Błąd 1
po zainstalowaniu alsa-lib-static, błąd znika, za to pojawia się to samo dla 
-lgpm, -lslang. Oba te błędy znikają po zainstalowaniu gpm-static i 
slang-static.

Ostatecznie jest:

[piotr w timemachine ~/rpm/rozne/qemu/qemu]$ make
for d in i386-user i386 i386-softmmu arm-user sparc-user ppc-user ppc-softmmu 
sparc-softmmu; do \
make -C $d all || exit 1 ; \
        done
make[1]: Wejście do katalogu `/home/users/piotr/rpm/rozne/qemu/qemu/i386-user'
make[1]: Nie ma nic do zrobienia w `all'.
make[1]: Opuszczenie katalogu 
`/home/users/piotr/rpm/rozne/qemu/qemu/i386-user'
make[1]: Wejście do katalogu `/home/users/piotr/rpm/rozne/qemu/qemu/i386'
gcc  -static -Wl,-T,/home/users/piotr/rpm/rozne/qemu/qemu/i386-vl.ld  -o 
qemu-fast vl.o osdep.o block.o readline.o monitor.o pci.o console.o 
block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o ide.o ne2000.o 
pckbd.o vga.o sb16.o dma.o oss.o fdc.o mc146818rtc.o serial.o i8259.o i8254.o 
pc.o cirrus_vga.o gdbstub.o sdl.o slirp/cksum.o slirp/if.o slirp/ip_icmp.o 
slirp/ip_input.o slirp/ip_output.o slirp/slirp.o slirp/mbuf.o slirp/misc.o 
slirp/sbuf.o slirp/socket.o slirp/tcp_input.o slirp/tcp_output.o 
slirp/tcp_subr.o slirp/tcp_timer.o slirp/udp.o slirp/bootp.o slirp/debug.o 
slirp/tftp.o libqemu.a  -lm -lz -L/usr/lib -lSDL -lm -ldl -lasound 
-L/usr/X11R6/lib -lX11 -lXext -laa -L/usr/lib -lcaca_pic -lslang -lX11 
-L/usr/X11R6/lib -lpthread -L/usr/lib -Wl,-rpath,/usr/lib -laa -lm 
-L/usr/X11R6/lib -lX11 -lgpm -lslang -lutil
/usr/lib/libSDL.a(SDL_loadso.o)(.text+0xa): In function `SDL_LoadObject':
: warning: Using 'dlopen' in statically linked applications requires at 
runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: __libc_errno: TLS definition in /usr/lib/libc.a(errno.o) 
section .tbss mismatches non-TLS reference in /usr/lib/libc.a(check_fds.o)
/usr/lib/libc.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [qemu-fast] Błąd 1
make[1]: Opuszczenie katalogu `/home/users/piotr/rpm/rozne/qemu/qemu/i386'
make: *** [all] Błąd 1
[piotr w timemachine ~/rpm/rozne/qemu/qemu]$

Ma ktoś jakieś pomysły dlaczego tak się dzieje. Być może jest coś nie tak z 
wielką trójcą gcc/binutils/glibc, chociaż z drugiej strony wszystko inne się 
dobrze kompiluje (za wyjątkiem nowych glibców z cvs).




Więcej informacji o liście dyskusyjnej pld-users-pl