OVH Cloud OVH Cloud

Compilation (de Qemu). Erreur : "cannot find -lm"

13 réponses
Avatar
Olivier Viennet
Bonjour,

Je viens de voir que les sources CVS de Qemu corrigent le bug qui
m'enpêchent d'utiliser mon lecteur de disquette.
Je souhaite donc les compiler, mais j'ai l'erreur suivante :

/usr//bin/ld: cannot find -lm
collect2: ld returned 1 exit status
make[1]: *** [qemu-fast] Erreur 1
make[1]: Leaving directory `/home/user/Desktop/qemu/cvs/qemu/i386'
make: *** [all] Erreur 1

Comment corriger cela ? (Je suis très très ignorant en compilation, et ne
fais pour l'instant qu'appliquer les commandes préconisées ...)

Merci beaucoup.

Olivier Viennet

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[user@localhost qemu]$ make
gcc -Wall -O2 -g -D_GNU_SOURCE -c -o dyngen.o dyngen.c
gcc -o dyngen dyngen.o
gcc -Wall -O2 -g -D_GNU_SOURCE -c -o qemu-mkcow.o qemu-mkcow.c
gcc -o qemu-mkcow qemu-mkcow.o
for d in i386-user i386 i386-softmmu arm-user sparc-user ppc-user; do \
make -C $d all || exit 1 ; \
done
make[1]: Entering directory `/home/user/Desktop/qemu/cvs/qemu/i386-user'
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o elfload.o
/home/user/Desktop/qemu/cvs/qemu/elfload.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o main.o
/home/user/Desktop/qemu/cvs/qemu/main.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o syscall.o
/home/user/Desktop/qemu/cvs/qemu/syscall.c
/home/user/Desktop/qemu/cvs/qemu/syscall.c: In function `do_syscall':
/home/user/Desktop/qemu/cvs/qemu/syscall.c:1512: warning: dereferencing
type-punned pointer will break strict-aliasing rules
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o mmap.o
/home/user/Desktop/qemu/cvs/qemu/mmap.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o signal.o
/home/user/Desktop/qemu/cvs/qemu/signal.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o path.o
/home/user/Desktop/qemu/cvs/qemu/path.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o vm86.o
/home/user/Desktop/qemu/cvs/qemu/vm86.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o thunk.o
/home/user/Desktop/qemu/cvs/qemu/thunk.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o exec.o
/home/user/Desktop/qemu/cvs/qemu/exec.c
gcc -Wall -O2 -g -fomit-frame-pointer -mpreferred-stack-boundary=2
-falign-functions=0 -fno-reorder-blocks -fno-optimize-sibling-calls -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o op.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/op.c
../dyngen -o op.h op.o
../dyngen -c -o opc.h op.o
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o translate-all.o
/home/user/Desktop/qemu/cvs/qemu/translate-all.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o cpu-exec.o
/home/user/Desktop/qemu/cvs/qemu/cpu-exec.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o gdbstub.o
/home/user/Desktop/qemu/cvs/qemu/gdbstub.c
../dyngen -g -o gen-op.h op.o
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o translate.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/translate.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o helper.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper.c
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper.c: In function
`helper_ret_protected':
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper.c:1602: warning:
`new_eflags' might be used uninitialized in this function
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o helper2.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper2.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o disas.o
/home/user/Desktop/qemu/cvs/qemu/disas.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o i386-dis.o
/home/user/Desktop/qemu/cvs/qemu/i386-dis.c
rm -f libqemu.a
ar rcs libqemu.a thunk.o exec.o translate-all.o cpu-exec.o gdbstub.o
translate.o op.o helper.o helper2.o disas.o i386-dis.o
gcc -g -Wl,-shared -o qemu-i386 elfload.o main.o syscall.o mmap.o signal.o
path.o vm86.o libqemu.a -lm
make[1]: Leaving directory `/home/user/Desktop/qemu/cvs/qemu/i386-user'
make[1]: Entering directory `/home/user/Desktop/qemu/cvs/qemu/i386'
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o vl.o
/home/user/Desktop/qemu/cvs/qemu/vl.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o block.o
/home/user/Desktop/qemu/cvs/qemu/block.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o ide.o
/home/user/Desktop/qemu/cvs/qemu/ide.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o vga.o
/home/user/Desktop/qemu/cvs/qemu/vga.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o sb16.o
/home/user/Desktop/qemu/cvs/qemu/sb16.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o dma.o
/home/user/Desktop/qemu/cvs/qemu/dma.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o oss.o
/home/user/Desktop/qemu/cvs/qemu/oss.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o fdc.o
/home/user/Desktop/qemu/cvs/qemu/fdc.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -I/usr/include/SDL
-D_REENTRANT -c -o sdl.o /home/user/Desktop/qemu/cvs/qemu/sdl.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o thunk.o
/home/user/Desktop/qemu/cvs/qemu/thunk.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o exec.o
/home/user/Desktop/qemu/cvs/qemu/exec.c
gcc -Wall -O2 -g -fomit-frame-pointer -mpreferred-stack-boundary=2
-falign-functions=0 -fno-reorder-blocks -fno-optimize-sibling-calls -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o op.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/op.c
../dyngen -o op.h op.o
../dyngen -c -o opc.h op.o
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o translate-all.o
/home/user/Desktop/qemu/cvs/qemu/translate-all.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o cpu-exec.o
/home/user/Desktop/qemu/cvs/qemu/cpu-exec.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o gdbstub.o
/home/user/Desktop/qemu/cvs/qemu/gdbstub.c
../dyngen -g -o gen-op.h op.o
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o translate.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/translate.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o helper.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper.c
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper.c: In function
`helper_ret_protected':
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper.c:1602: warning:
`new_eflags' might be used uninitialized in this function
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o helper2.o
/home/user/Desktop/qemu/cvs/qemu/target-i386/helper2.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o disas.o
/home/user/Desktop/qemu/cvs/qemu/disas.c
gcc -Wall -O2 -g -fomit-frame-pointer -I.
-I/home/user/Desktop/qemu/cvs/qemu/target-i386
-I/home/user/Desktop/qemu/cvs/qemu -D_GNU_SOURCE -c -o i386-dis.o
/home/user/Desktop/qemu/cvs/qemu/i386-dis.c
rm -f libqemu.a
ar rcs libqemu.a thunk.o exec.o translate-all.o cpu-exec.o gdbstub.o
translate.o op.o helper.o helper2.o disas.o i386-dis.o
gcc -static -Wl,-T,/home/user/Desktop/qemu/cvs/qemu/i386-vl.ld -o
qemu-fast vl.o block.o ide.o vga.o sb16.o dma.o oss.o fdc.o sdl.o libqemu.a
-lm -L/usr/lib -lSDL -lpthread -lm -ldl -lasound -laudio -lXt
-L/usr/X11R6/lib -lX11 -lXext
/usr//bin/ld: cannot find -lm
collect2: ld returned 1 exit status
make[1]: *** [qemu-fast] Erreur 1
make[1]: Leaving directory `/home/user/Desktop/qemu/cvs/qemu/i386'
make: *** [all] Erreur 1

3 réponses

1 2
Avatar
Olivier Viennet
no_spam wrote:

J'ai du code qui formatte sous DOS et Linux, mais pas sous Windows.
Il n'est pas encore dans le CVS, car j'ai encore des problèmes
avec certains OS (dont des certains Linux).
L'émulation de la DMA est buggée, et Windows utilise une technique
assez étrange pour gérer la DMA, ce qui le fait freezer sous qemu
lors des accès aux disquettes (il ne gère pas les timeouts sur
la disquette, apparement).


Je me suis peut-être mal exprimé : ma disquette est formattée et contient
des données, mais au moment de la lire, Qemu fait un accès dessus (bruit du
lecteur) mais au lieu de la lire, il me propose de la formatter.

Par contre sous Bochs, j'ai accès à ma disquette, mais pas non plus au
cdrom.


Pour le CDROM, il faut lancer un driver DOS pour qu'il marche
sous Windows.


Donc modifier l'autoexec, je suppose.
Je vais essayer.
Mais en fait j'ai juste fait un essai comparatif. Bochs est quasiment
inutilisable tellement il est lent ...

Pour le CDROM, il faut lancer un driver DOS pour qu'il marche
sous Windows.


C'est pareil pour Qemu ? ou bien ce n'est pas encore implémenté ?


Avatar
no_spam
On Sat, 14 Feb 2004 23:23:55 +0100, Olivier Viennet wrote:

no_spam wrote:

J'ai du code qui formatte sous DOS et Linux, mais pas sous Windows.
Il n'est pas encore dans le CVS, car j'ai encore des problèmes
avec certains OS (dont des certains Linux).
L'émulation de la DMA est buggée, et Windows utilise une technique
assez étrange pour gérer la DMA, ce qui le fait freezer sous qemu
lors des accès aux disquettes (il ne gère pas les timeouts sur
la disquette, apparement).


Je me suis peut-être mal exprimé : ma disquette est formattée et contient
des données, mais au moment de la lire, Qemu fait un accès dessus (bruit du
lecteur) mais au lieu de la lire, il me propose de la formatter.


Tu as de la chance qu'il ne se freeze pas complètement.
Le bug que je décrit concerne tous les accès à la disquette.


Par contre sous Bochs, j'ai accès à ma disquette, mais pas non plus au
cdrom.


Pour le CDROM, il faut lancer un driver DOS pour qu'il marche
sous Windows.


Donc modifier l'autoexec, je suppose.


Je suppose aussi. Je n'utilise pas assez DOS/Windows (à part
pour le crasher au boulot et les tests de qemu) pour en connaitre
les "subtilités".

Je vais essayer.
Mais en fait j'ai juste fait un essai comparatif. Bochs est quasiment
inutilisable tellement il est lent ...

Pour le CDROM, il faut lancer un driver DOS pour qu'il marche
sous Windows.


C'est pareil pour Qemu ? ou bien ce n'est pas encore implémenté ?


Oui. C'est sans doute du au fait que Qemu n'implémente pas à ce jour
d'émulation PCI. Il semblerait que Windows (95 et +) n'implémente
plus de driver CDROM ISA. Par contre, si le DOS utilise un driver
CDROM, Windows saura l'utiliser, apparement.



Avatar
Olivier Viennet
Je vais faire quelques essais pour le CDROM.

Olivier V
1 2