Kompilacja qemu
Piotr Wawrzyniak
wopozka w gazeta.pl
Pią, 15 Paź 2004, 21:36:18 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