Pages : 1
#1 Le 08/05/2022, à 15:48
- FalCT60
Compilation dédiée
Bonjour,
J'ai lu voilà quelques temps que l'intérêt de compiler soi-même un logiciel depuis les sources est qu'il se trouve alors optimisé pour la machine sur laquelle il a été produit.
Sur le moment, je n'ai pas tiqué, et puis de toute façon l'auteur ne donnait pas plus de détails. Il va d'ailleurs falloir que je retrouve le sujet en question.
Sur ma machine, man make et info make donnent le même résultat, contrairement à ce qui est expliqué à la fin du man, du coup je ne suis pas plus avancé.
Et mes recherches sur la toile ne m'ont pas permis d'avancer non plus.
Voilà qui devrait permettre de cerner ma situation et orienter les réponses des intervenants disposés à m'aider.
man et help indiquent que -B permet de fabriquer toutes les cibles sans condition.
Cela signifie-t-il que sans -B la compilation est optimisée pour mon système, et qu'avec elle est plus universelle ?
Ou bien est-ce une mauvaise compréhension de ma part ?
Dans ce dernier cas, comment dois-je procéder pour :
dire à make de ne se concentrer que sur mon seul système, ou
au contraire, lui demander de générer quelque chose qui pourra être utilisé sur n'importe quelle machine
Merci d'avance,
J.-Luc
Hors ligne
#2 Le 08/05/2022, à 20:02
- JBF
Re : Compilation dédiée
make ne fait pas la compilation. La compilation est faite par le compilateur. make sert à ordonnancer la compilation des différents fichiers source nécessaires à la production d'un exécutable.
Ce sont les options passées au compilateur qui permettent d'optimiser le code compilé pour une cible particulière.
https://fr.wikipedia.org/wiki/Make
LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : Ask LibreOffice
Hors ligne
#3 Le 08/05/2022, à 21:42
- FalCT60
Re : Compilation dédiée
D'accord pour le rôle réel de make. Il s'agit donc d'un aiguilleur chargé de s'assurer que GCC reçoit ce qu'il faut dans l'ordre correct.
Quoi qu'il en soit, je me demande si je ne fais pas fausse route, ou si je n'ai pas mal interprété ce qui est qualifié de cible.
Se pourrait-il qu'il s'agisse plutôt de modules composant le logiciel que de systèmes destinés à faire tourner ledit logiciel ?
Hors ligne
#4 Le 08/05/2022, à 21:46
- JBF
Re : Compilation dédiée
Ni l'un ni l'autre. Lis la page wikipedia que j'ai indiquée, tu auras ta réponse.
LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : Ask LibreOffice
Hors ligne
#5 Le 09/05/2022, à 06:47
- iznobe
Re : Compilation dédiée
Bonjour , audelà de la question de " comment compiler pour optimiser le logiciel " , compiler apporte d' autre questions .
le logiciel , n' est alors pas pris en charge par le systeme au niveau des Mises a jours .
C' est a dire que tu dois en faire la gestion manuelle , afin de corriger les bugs et de maintenir ce logiciel pour y faire les mises a jour de securité et autre , tout en sachant que pour desinstaller un logiciel compiler manuellement ,c ' est souvent boujour la galere !
A toi de voir si gagner ( peut etre ) quelques % d ' optimisation sur un logiciel vaut la peine de galerer autant ou pas .
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#6 Le 09/05/2022, à 07:27
- Nuliel
Re : Compilation dédiée
Bonjour,
Comme le soulignent iznobe et JBF, ce n'est pas si simple que cela.
Tu peux peut-être gagner un peu en optimisation vu que les programmes livrés dans les dépôts se doivent de tourner sur un maximum de machines, mais clairement c'est plus une galère qu'autre chose, que ce soit pour les mises à jour puisque chaque mise à jour demande de recompiler le programme, ou sur les options de compilations (je doute franchement que tu aies envie de te plonger dans le manuel de gcc ou clang, deux compilateurs sous linux).
L'intérêt de compiler un programme, c'est surtout quand tu as par exemple besoin d'une fonctionnalité (probablement de la dernière version du logiciel en question) qui n'est ni dans les dépôts, ni dans un ppa.
Pour donner un exemple, j'avais besoin la semaine dernière de la librairie crypt pour l'architecture arm, mais les dépôts ne fournissent plus crypt dans les outils de compilation croisé arm (car la fonction crypt est obsolète), du coup j'ai compilé cette librairie depuis les sources.
Hors ligne
#7 Le 09/05/2022, à 07:33
- FrancisFDZ
Re : Compilation dédiée
Bonjour,
Cette compilation "au plus près du matériel" a notamment été préconisée par Gentoo, qui se disait ainsi "la version la plus rapide de linux"; Cette primauté, d'ailleurs controversée, présente aussi des inconvénients, dont essentiellement la mise à jour par compilation contrairement à la méthode traditionnelle d'importation de fichiers binaires. Le gain en vitesse présenté par Gentoo n'est pas assez important pour en faire une distribution incontournable, bien qu'elle soit largement à la hauteur des autres. Pour moi, son gros intérêts est surtout pédagogique : en installant Gentoo, on apprend des détails insoupçonnés sur son matériel et sur la façon d'en tirer le meilleur parti, au détriment peut-être 'une compatibilité avec les logiciel distribués au format binaire, donc non "optimisés" cette "optimisation" n'étant d'ailleurs pas très sensible. Le temps supposé gagné grace à une compilation optimisée et largement perdu lors d'une mise à jour, nécessairement plus longue que sur des versions traditionnelles ; c'est à cause de cette durée excessive à mon goût que j'ai fini par abandonner cette distribution, mais je maintiens que les avantages pédagogiques sont bien réels et je ne regrette pas d'avoir relevé le défi que représentait l'installation de ce système.
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne
#8 Le 09/05/2022, à 20:44
- FalCT60
Re : Compilation dédiée
Bonsoir,
Merci pour vos remarques.
L'une des raisons de ma démarche est que certains logiciels ne sont plus présents dans les dépôts, mais sont distribués uniquement sous forme de snap ou flatpack.
Ceci confère sans doute certains avantages, mais je subodore moult inconvénients. Surtout les snap.
Et puis, ayant beaucoup profité, je me suis dit qu'il me serait peut-être possible de me rendre utile, pour une fois, en palliant au manque engendré. Pourquoi pas en maintenant un ou deux dépôts ?
À condition de ne pas faire de travers - comme diffuser une version qui ne tournerait que sur ma propre machine. Ce serait vraiment nul.
Commencer par faire les choses simplement, sans trop chercher à comprendre ce qui se passe dans les entrailles.
Depuis le temps que je lisais des échanges relatifs à github, je m'y suis plongé et ai déjà commencé à me faire la main avec quelques logiciels, dont certains relativement petits (John, sirilIC) et d'autres un peu plus consistants (MusE, HandBrake, darktable, Audacity) grâce auxquels j'ai pu progresser. Je sais à présent cibler une version en particulier, mais il me reste énormément à apprendre.
Ceci étant, je n'en suis actuellement qu'aux prémices. Parvenir à produire un exécutable est une chose, reste à savoir si maintenir un dépôt ne sera pas au-delà de mes capacités. Nous verrons plus tard.
Quoi qu'il en soit, il m'arrive (assez fréquemment) de me retrouver bloqué par un détail que je ne parviens à saisir. C'est par exemple le cas avec cette histoire de cible : j'ai beau relire la page indiquée par JBF, aucune étincelle.
Je vais donc faire une coupure et y revenir dans quelques temps - ou si un détail remonte, comme cela se produit assez souvent. Laisser mijoter, ça ne peut qu'être meilleur - à condition de surveiller et de ne pas laisser attacher.
Nous verrons bien ce qu'il en découlera.
Hors ligne
#9 Le 09/05/2022, à 21:26
- Nuliel
Re : Compilation dédiée
Dans ce cas, il est préférable de passer sur des ppa fournissant ces paquets et dans lesquels tu as confiance.
En terme de difficulté, maintenir un ppa est bien au-delà de la simple compilation de binaires.
La plupart du temps, compiler un programme revient à lire le fichier INSTALL s'il y en a un et le suivre, et faire généralement
./configure
make
make install
Une cible, c'est plutôt un terme utilisé par make: un programme est constitué de plein de fichiers. Il ne suffit pas de passer tous les fichiers à gcc pour compiler, il faut définir les relations entre les différentes cibles:
- pour créer le programme, il faut les objets A et B
- l'objet B dépend de C
Dans ce cas,
-> l'objet A et C sont créés
-> l'objet B est créé en "utilisant" l'objet C
-> les objets sont "regroupés", et ça fait le binaire
Hors ligne
#10 Le 10/05/2022, à 08:22
- bruno
Re : Compilation dédiée
La plupart du temps, compiler un programme revient à lire le fichier INSTALL s'il y en a un et le suivre, et faire généralement
./configure make make install
Je conseille plutôt cette méthode générique :
./configure
make
checkinstall
checkinstall va créer un paquet Debian qui sera bien plus facile à supprimer en cas de problème ou à gérer en cas de mise à jour ou remplacement par un paquet officiel.
#11 Le 11/05/2022, à 19:57
- FalCT60
Re : Compilation dédiée
Bonsoir,
@ Nuliel : en gros, les dépôts ne sont pas à la portée du premier venu. Bon, je verrai bien lorsque j'aurai assimilé le reste.
Et, du coup, j'avais tout faux au sujet des cibles. Tant qu'à faire...
Mais je me doute que j'ai mal appréhendé la chose, et que ça deviendra plus clair un peu plus tard dans le processus.
@ bruno : j'ai un peu joué avec checkinstall, et me suis rendu compte qu'apparemment on ne peut pas y recourir tout le temps.
Ou alors, il doit falloir effectuer quelques modifications en amont.
Bien, je me retrouve avec trois gros pavés à digérer : git, gcc & cie, et ppa.
Encore merci.
Hors ligne
Pages : 1