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 vmagnin (site web personnel, Mastodon) . Évalué à 3 (+1/-0).
Effectivement, j'ai remarqué que sous Debian il faut mettre le
-lmaprès le nom du fichier à compiler, sinon ça ne marche pas.Je vois que le man de gcc dit :
Mais ça n'explique pas pourquoi la position de
-laurait un effet différent dans d'autres distributions.[^] # Re: Bonne question...
Posté par Cyril Brulebois (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 aveccc(ougccdirectement, vers lequelccpointe avec le système d'alternatives dans sa configuration par défaut sur ce système), mais pas avecclang, 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.