Debutant: questions de compilation

Salut la compagnie!

Faché du win32 obsolete je ramene ma fraise ici, je plaisante :laughing: (pas pour win 32) non la programmation sur linux me parait bien sympa j’ai donc installé Kdevelop (je suis pas encore un bourrin du vi et du make), premierement cet ide est-il une bonne idée?Je suis aussi faché avec codeblocks si jamais, enfin bon, pour la compil j’ai installé g++ et ma question principale c’est: comment fonctionnent les bibliotheques sous debian/linux?

Sont elles (.h et .? c’est quoi l’extension des bibliotheques sous linux?)dans le dossier du compilo ou dans un autre dossier? Je n’ai trouvé aucun des deux.

Faut il également les linker? La comamnde configure utilise le makefile si j’ai bien compris, et ça “prepare” le compilateur c’est donc là dedans que je devrais trouver les references a mes bibliotheques? là que je devrais les ajouter?

J’ai vu qu’on pouvais installer les lib a partir de paquets depuis synaptic mais j’aimerais bien savoir avant comment ca marche ces bibliotheques et ou ca va, si jamais j’ai a changer de version ou tripatouiller quoi que ce soit. :smt024

Oh et en installant kdevelop j’ai voulu compiler un petit hello world histoire de dire que ça marche, cherchant pas a voir plus loin j’ai installer Kconsole mais j’imagine que ce n’est pas la chose à faire puisque j’utilise gnome, il doit y avoir un équivalent mais ce doit etre dans les réglages de l’ide ou une bibliotheque à inclure non?

J’espere pas avoir été trop confus :smt083

Pour les formats, tu as les biblio statiques et partagées. Les premières c’est «.a» les secondes c’est «.so».

Ensuite on a les outils…
[ul]
[li]make c’est le chef d’équestre tu lui donne un makefile et il te fais ce que tu veut (c’est une sorte de script shell très particulier pour faire simple)[/li]
[li]gcc c’est une collection de compilateurs (C, C++, Fortran,…), il compile et link tout comme il faut[/li]
[li]pour ce qui est des envirenoment de développement ça dépend des goûts[/li]
[li]./configure && make && make instal c’est en faite l’usage des aoutotools, grosso modo tu écris des scrits, compilé par des programmes qui donneront des script (makefile) qui une fois appelés appelleront le compilateur pour créer ton programme :mrgreen: :smt003 simple non ?[/li][/ul]

Non je veux une démonstration “c’est pas sorcier” avec des aimants.

Je plaisante j’ai compris. Par contre quelle est la difference entre les biblio dans le dossier racine et celles dans usr?

Egalement il y a plusieurs dossiers gcc, dans bin bon a ce que j’en ai deduis c’est la qu’on a les programmes et scripts ou tout dumoins leurs commandes…, ceux qui m’interessent doivent donc logiquement se trouver dans /usr/lib/ ou /usr/lib 64/, mais que choisir? je prend mon architecture puis je vais dans le sous dossier de la version qu’utilise l’IDE et je mets mes .h dans le sous dossier includes? (qui me parait bien vide d’ailleurs)

Au début je penser comme MisterFreez mais maintenant je me demande exactement ce que tu veut comme renseignement là ?

Tu veut compiler quoi exactement des sources que tu modifie toi même ? ou bien du code que tu as pondu ?

_ dans le premier cas tu n’a pas besoin vraiment de te cassé la tête avec les make et makefile tu as tout ce que tu veut en générale seuls quelque source d’application te seront nécessaire ( si les dépôts font tristes mines :stuck_out_tongue: ) sinon c’est gentoo et slackware direct si tu adore compiler pour un oui ou un non :smt003
_ dans le deuxième cas retrousse tes manches et à toi les joies de l’environnement de développement ce sera bien plus simple je pense car plus complet pour tes besoins :smt002

Après “pas taper” si j’ai rien compris car il est tard et je suis pas en grande forme :unamused:

[quote=“Mo3b1us”]
Je plaisante j’ai compris.[/quote]
Mais euuuuh! Autant j’étais out pour expliquer les subtilités de la programmation, autant, les aimants, j’aurais pu essayer :cry:
C’est toujours pareil, dès qu’on s’amuse, on m’invite pas.

Ne touche pas à /usr ni à /lib !

Tes fichiers sont dans ton répertoires de travail. Ce qui est dans /usr, /lib par exemple sont
[ul]
[li]soit le standard la STL (pour le C++), la libc, la lib standard de Fortran,…[/li]
[li]soit lié au noyau, le noyau possède des fonctions directement appellable en C/C++ : mmap() par exemple[/li]
[li]soit des lib que tu as installé (volontairement ou par effet de bord), c’est par exemple libpng, lib boost,…[/li][/ul]

Tout ça ça n’a rien à voir avec toi, tu n’a pas à t’en préoccupé si tu veut faire un logiciel. Si tu as vraiment besoin d’y toucher je te conseil de passer par debootstrap histoire de pas planter ta distrib’.

Le compilateur (et tout les outils liés) vont chercher soit dans /usr/lib soit dans /lib soit dans d’autres répertoires, soit dans le répertoire courant soit dans les répertoires que tu va lui dire par les options -I et -L. Donc généralement on se créer un répertoire, on organise nos sources dedans et tout marche pour le mieux.

[quote]Donc généralement on se créer un répertoire[/quote]+1

C’est ce que je fais généralement:mkdir ~/usret je compile tout ce que je télécharge avec l’option:./configure --prefix=/home/superninja/usr make make test make check make install echo ouf... terminé make some coffeeEnsuite pour utiliser les bibliotèques qui se trouvent dans ton $HOME, ça dépend du système utilisé (moi j’aime bien Scons)

Oui enfin si c’est pour installer des lib regarde si tu les a pas déjà dans les dépôts.

hm c’est tentant :smiling_imp: mais je laisse ça a Duxlebowski pour combler sa frustration, je parlais bien de code source crée moi meme mais je voulais savoir comment s’installait manuellement une biblio, et savoir ou ca allait quand on en installait une depuis un gestionnaire de paquets. Pitié non pas d’installation de logiciels depuis les sources! :smt078

[quote] * soit des lib que tu as installé (volontairement ou par effet de bord), c’est par exemple libpng, lib boost,…

Tout ça ça n’a rien à voir avec toi, tu n’a pas à t’en préoccupé si tu veut faire un logiciel. Si tu as vraiment besoin d’y toucher je te conseil de passer par debootstrap histoire de pas planter ta distrib’.[/quote]

Bein pourquoi? Si je telecharge par exemple les fichiers d’opengl ou d’opencv pourquoi je pourrais pas les mettre la dedans? Ca cracherait ma distrib’ de rajouter un truc?oO bizarre.

Donc je dois mettre les fichiers de la biblio dans le dossier de mon projet? Mais c’est nul! :smt022

PS: oui les libs sont dans les depots mais je veux savoir comment ca marche et ou va tout le bazar (et anticiper sur celles qui y seraient pas), j’aurais migré vers vista si je voulais faire les 3 singes. :smt069

PS bis: j cprd aps pk sa marche pa “make some coffe” sa fé koi o just?

[mode je suis à l’apéro]“make some coffe” il te faut une petite femme pour compiler ton café :smt005[/mode je suis à l’apéro]

[quote=“Mo3b1us”][quote=“MisterFreez”][ul][li]soit des lib que tu as installé (volontairement ou par effet de bord), c’est par exemple libpng, lib boost,…[/li][/ul]

Tout ça ça n’a rien à voir avec toi, tu n’a pas à t’en préoccupé si tu veut faire un logiciel. Si tu as vraiment besoin d’y toucher je te conseil de passer par debootstrap histoire de pas planter ta distrib’.[/quote]

Bein pourquoi? Si je telecharge par exemple les fichiers d’opengl ou d’opencv pourquoi je pourrais pas les mettre la dedans? Ca cracherait ma distrib’ de rajouter un truc?oO bizarre.[/quote]
Pas forcément mais pour garder l’intégrité du système le mieux c’est de passer par APT sinon tu n’es pas sur d’écraser un fichier ou de te faire écraser un fichier plus tard. Ça fait parti des bonnes pratiques sous debian.

Si tu veut voir les fichiers créé par un paquet tu as deux solutions :
[ul]
[li]le paquet est installé : tu fait dpkg --listfiles[/li]
[li]le paquet n’est pas installé : tu installe apt-file et tu fais apt-file update #la première fois uniquement (c'est un peu long) apt-file list konqueror[/li][/ul]

NIckeeeeeeeeeeeeel

Merci MisterFreeze pour ton dpkg c’est merveilleux, je me suis donc embusqué derriere mon terminal :smt027 , j’ai installé ma lib via synaptic, et au moment ou tout ces petits fichiers courraient a tout bits de leur paquet à leurs dossiers je me suis servi de dpkg pour les retrouver, je vous raconte pas leur tete! :smt120 :smt031 :smt120

La morale de cette histoire est donc: les .so et .a vont dans /usr/lib et les .h dans /usr/include/nomdelalib/ !

Une histoire qui se finie bien, j’adore :smt089 , merci encore à tout le monde!

Pour tes bibliothèques personnelles ou récupérée en dehors des paquets Debian, je te conseille de les installer dans /usr/local/lib et /usr/local/include, ou bien dans ton répertoire personnel dans lequel tu peux créer les répertoires ~/lib et ~/include.

hm c’est tentant :smiling_imp: mais je laisse ça a Duxlebowski pour combler sa frustration[/quote]

Cette délicate attention sera portée à ton crédit, au compte de notre amitié future, cher Mo3b1us! :smt117 (Bien entendu, j’aurais préféré sceller cette déclaration officielle par un bouquet de fleurs fraîches, mais je n’ai trouvé qu’une poule dans les smilies :open_mouth: )
:smt006 Dominus vobiscum et toute cette sorte de choses!

Merci mesmento pour l’astuce!

Et bien soit Duxlebowski ! :smt117

[quote=“Mo3b1us”]
Et bien soit Duxlebowski ! :smt117[/quote]
Je suis touchée! Merci!

Mais ce n’était rien du tout, voyons! T’aider fut un plaisir (oui, je sors, je sors et je me tiens tranquille et je ne reviens pas :blush: promis)
:smt006