CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Makefile et LDLIBS

godrik
godrik
Niveau 30
12 février 2018 à 22:48:50

Salut a vous,
Je viens de tomber sur la variable LDLIBS dans les makefiles standard de GNU make.
C'est standard ce truc? C'est vieux?
C'est la premiere fois que je le vois en 20 ans d'unixerie. Est ce que j'ai loupe cette variable tout ce temps? Ou c'est une nouvelle convention?

loitho
loitho
Niveau 10
13 février 2018 à 00:07:20

Comment tu links tes libraries autrement que par l'usage de LDLIBS ?

godrik
godrik
Niveau 30
13 février 2018 à 00:13:40

Jusqu'a present j'utilisais LDFLAGS

DeletThis
DeletThis
Niveau 5
13 février 2018 à 10:10:20

https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html

LDFLAGS
Extra flags to give to compilers when they are supposed to invoke the linker, ‘ld’, such as -L. Libraries (-lfoo) should be added to the LDLIBS variable instead.

LDLIBS
Library flags or names given to compilers when they are supposed to invoke the linker, ‘ld’. LOADLIBES is a deprecated (but still supported) alternative to LDLIBS. Non-library linker flags, such as -L, should go in the LDFLAGS variable.

godrik
godrik
Niveau 30
13 février 2018 à 14:34:09

Deletthis. merci j'avais trouve le manuel de gnu make aussi.
Mais ca ne repond pas a ma question.
Est ce que c'est une gnuerie ou est ce que c'est standard?
Est ce que ca a toujours ete utilise ou c'est apparu recement?

godrik
godrik
Niveau 30
13 février 2018 à 14:38:05

A priori c'est vieux. Je suis tombe sur un bouquin de 2002 qui utilisait deja ldlibs.

Reste a voir si c'est standard ou si c'est une gnuerie.

_S0uL
_S0uL
Niveau 9
13 février 2018 à 21:31:29

Hmm à priori la spécification POSIX[1] ne parle pas de LDLIBS donc ce serai bien une "gnuerie" en effet. C'est difficile de trouver des documents là dessus puisque la pluspart parlent de GNU make.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html#tag_20_76_13_09

Runnymede
Runnymede
Niveau 10
13 février 2018 à 23:45:40

Le 13 février 2018 à 18:13:23 Google_Bot a écrit :
Une méthode empirique pour vérifier serait de tester ça sur un OS extrémiste anti-GNU type OpenBSD.

Les makefiles de GNU Make ne sont de toute façon pas compatible avec BSD Make, le premier existant généralement sous le nom "gmake" sur les distributions BSD

[deban]_Dakien
[deban]_Dakien
Niveau 10
14 février 2018 à 00:56:55

Les makefiles de GNU Make ne sont de toute façon pas compatible avec BSD Make, le premier existant généralement sous le nom "gmake" sur les distributions BSD

Oui, gmake fait effectivement le travail différemment que le make que l'on a sur BSD. Notre make pourrait s'appeler "bmake" s'il était utilisé sur autre chose qu'UNIX BSD du coup histoire de pas confondre les deux.

Il me semble, si je ne dis pas de bêtises, que LD est différent entre GNU/Linux et BSD. Par exemple, on n'a aucun fichier libld*.so mais on peut utiliser LDFLAGS parce qu'il est dans le noyau directement. Il sait le sortir quand on l'appelle. On n'a pas non plus de fichier libc*.so et libm*.so
C'est pas qu'on les utilise pas, c'est juste qu'on ne les a pas de la même manière mais je pense qu'on les utilise de la même manière au final. Encore une fois, je suis loin d'être un expert la dedans, je sais pas si ça aide.

The Wine configure script has problems locating the libraries in the

buildlink directory, so prepend all of the LDFLAGS necessary to link
against the libraries.

CONFIGURE_ENV+= X_LIBS=${LDFLAGS:M*:Q}

CONFIGURE_ENV+= CFLAGS=${CFLAGS:M*:Q}\ -DDEVOSSAUDIO="\"${DEVOSSAUDIO}\""
CONFIGURE_ENV+= LDD=${LDD:Q}
LIBS+= ${LDFLAGS}

Et moi, quand j'utilise cmake dans mes Makefile pkgsrc-compatible, j'écris ça

CMAKE_ARGS+= -Dlibdl=${DL_LIBS}

Quelque chose de différent jusque là ? :question:

godrik
godrik
Niveau 30
14 février 2018 à 01:52:26

Le 13 février 2018 à 21:31:29 _S0uL a écrit :
Hmm à priori la spécification POSIX[1] ne parle pas de LDLIBS donc ce serai bien une "gnuerie" en effet. C'est difficile de trouver des documents là dessus puisque la pluspart parlent de GNU make.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html#tag_20_76_13_09

Wow c'est rude make posix. Il n'y a pas de regle pour construire un binaire a partir d'un .cpp.
Ni meme de relge pour construire un binaire a partir d'un .o.
Donc en effet LDLIBS n'est pas super utile dans un support de regle implicite si minimaliste. Dans ce cas, tu peux en effet mettre ton -l dans LDFLAGS

godrik
godrik
Niveau 30
14 février 2018 à 01:53:32

Le 13 février 2018 à 23:45:40 Runnymede a écrit :

Le 13 février 2018 à 18:13:23 Google_Bot a écrit :
Une méthode empirique pour vérifier serait de tester ça sur un OS extrémiste anti-GNU type OpenBSD.

Les makefiles de GNU Make ne sont de toute façon pas compatible avec BSD Make, le premier existant généralement sous le nom "gmake" sur les distributions BSD

Bah, je ne sais pas ca. La syntaxe a l'air principalement la meme au niveau de la grammaire de make. C'est assez epure dans posix make, mais c'est fondamentallement la meme syntaxe.

godrik
godrik
Niveau 30
14 février 2018 à 01:57:58

Il me semble, si je ne dis pas de bêtises, que LD est différent entre GNU/Linux et BSD. Par exemple, on n'a aucun fichier libld*.so mais on peut utiliser LDFLAGS parce qu'il est dans le noyau directement. Il sait le sortir quand on l'appelle. On n'a pas non plus de fichier libc*.so et libm*.so

Nan mais ca c'est pas grave, tune linknes jamais explicitement avec libm-jesaispasquoi.so. Tu as un parametre qui link avec la lib math et qui doit dependre du compilo.

Et moi, quand j'utilise cmake dans mes Makefile pkgsrc-compatible, j'écris ça

<snip>

Quelque chose de différent jusque là ? :question:

Moralement c'est pas super different.

_S0uL
_S0uL
Niveau 9
14 février 2018 à 18:14:00

Wow c'est rude make posix

Mais posix c'est juste des spécifications non ? J'aurai tendence à penser qu'on implémente comme on veut au dessus de ça, tant qu'on implémente au moins la spec on reste "posix compliant". Du coup c'est normal que les specs soient assez brutes par rapports aux implémentations. Ou alors ça ne se passe pas du tout comme ça ?

godrik
godrik
Niveau 30
14 février 2018 à 23:34:07

Le 14 février 2018 à 18:14:00 _S0uL a écrit :

Wow c'est rude make posix

Mais posix c'est juste des spécifications non ? J'aurai tendence à penser qu'on implémente comme on veut au dessus de ça, tant qu'on implémente au moins la spec on reste "posix compliant". Du coup c'est normal que les specs soient assez brutes par rapports aux implémentations. Ou alors ça ne se passe pas du tout comme ça ?

Tu as raison. Mais du coup, comme la norme ne specifie pas grand chose, ca rend l'ecriture de code compatible posix plus difficile. Parceque si tu veux que ton code soit portable, tu ne peux pas te reposer sur les simplicite d'ecriture d'une implementation particuliere.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment