URL: https://linuxfr.org/forums/programmationautre/posts/bizarrerie-bug-avec-make Title: Bizarrerie (bug?) avec make Authors: ✅ ffx Date: 2009年02月27日T15:22:59+01:00 Tags: Score: 1 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 !