Forum Linux.debian/ubuntu ordre des arguments de cc

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
2
nov.
2025

Bonjour,
Si on effectue une édition de lien invoquée par -lm et -lSDL2
l'ordre des arguments est important pour toutes les distributions fondées sur Debian
..
Une seule façon d'invoquer cc convient :
cc -Wall avecMath.c avecSDL2.c -lm $(sdl2-config --cflags --libs)

..
Cette configuration ignore -lm
cc -Wall -lm $(sdl2-config --cflags --libs) avecMath.c avecSDL.c

Les autres distributions linux ou freebsd n'y sont pas sensible …
Pourquoi?

  • # Bonne question...

    Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

    Effectivement, j'ai remarqué que sous Debian il faut mettre le -lm après le nom du fichier à compiler, sinon ça ne marche pas.

    Je vois que le man de gcc dit :

    It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o. If bar.o refers to functions in z, those functions may not be loaded.

    Mais ça n'explique pas pourquoi la position de -l aurait un effet différent dans d'autres distributions.

    • [^] # Re: Bonne question...

      Posté par  (site web personnel) . Évalué à 2 (+0/-0).

      Qui est cc ?

      Il n'y a pas unicité, ni d'implémentation, ni de version, donc commencer par préciser un peu de qui on parle pourrait avoir un sens…

      Le programme en question peut jouer un rôle également.

      Typiquement, un bête programme avec un include <math.h> et un appel à exp() compile trivialement avec cc (ou gcc directement, vers lequel cc pointe avec le système d'alternatives dans sa configuration par défaut sur ce système), mais pas avec clang, ce qui se corrige en ajoutant un -lm, indifféremment à gauche ou à droite…

      (gcc 12.2.0-14+deb12u1, clang 14.0.6, le tout sur Debian 12 en amd64.)

      Debian Consultant @ DEBAMAX

Envoyer un commentaire

Suivre le flux des commentaires

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