Forum Programmation.autre Bizarrerie (bug?) avec make

Posté par .
Tags : aucun
1
27
fév.
2009
Bonjour à tous.
Je viens de passer de longues minutes à tenter de lancer un make sans y parvenir.

Une fois la panique passée, j'ai compris que c'était dû à la présence d'un fichier nommé Makefile.S.

Lorsqu'il y a présence d'un Makefile.S (ou d'un Makefile.toto.S dans le cas où je fais un make -f Makefile.toto), la commande "make" tente d'appeler l'assembleur pour créer le Makefile.

Je sais qu'il existe des règles implicites utilisées par make, qui font par exemple qu'écrire "make toto" va tester l'existence d'un fichier toto.c à compiler, mais j'ignorais l'utilisation de ces mêmes règles en ce qui concerne le fichier Makefile, et je m'en étonne. (Dans mon exemple particulier, j'imagine mal comment make peut envisager une seconde tomber sur un fichier Makefile correct à partir de code assembleur assemblé ;) )

J'aimerais vos avis : est-ce un bug ou un comportement normal ? avez-vous le même comportement chez vous ? dois-je le signaler ?

Bref voici les commandes que j'ai testées :

ffx@local:~/testdir$ rm toto.c
ffx@local:~/testdir$ touch Makefile
ffx@local:~/testdir$ make
make: *** No targets. Stop. # tout à fait normal
ffx@local:~/testdir$ touch Makefile.S
ffx@local:~/testdir$ make
cc Makefile.S -o Makefile
/usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [Makefile] Error 1
ffx@local:~/testdir$ ls
Makefile.S # en plus ce vandale a effacé mon fichier Makefile !
ffx@local:~/testdir$ rm Makefile.S
ffx@local:~/testdir$ touch Makefile.toto
ffx@local:~/testdir$ make -f Makefile.toto
make: *** No targets. Stop.
ffx@local:~/testdir$ touch Makefile.toto.S
ffx@local:~/testdir$ make -f Makefile.toto
cc Makefile.toto.S -o Makefile.toto
/usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [Makefile.toto] Error 1
ffx@local:~/testdir$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu



Je précise que dans ce test les fichiers Makefile(.S) sont vides mais ce n'était pas le cas dans mes tentatives initiales.

Bon week-end !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.