Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/05/2022, à 16: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 :

  1. dire à make de ne se concentrer que sur mon seul système, ou

  2. 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, à 21: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 : https://ask.libreoffice.org/fr/

Hors ligne

#3 Le 08/05/2022, à 22: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, à 22: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 : https://ask.libreoffice.org/fr/

Hors ligne

#5 Le 09/05/2022, à 07: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 utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM . avec Ubuntu , LM et W$10

Hors ligne

#6 Le 09/05/2022, à 08: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.


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#7 Le 09/05/2022, à 08: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, à 21: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. roll
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, à 22: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


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#10 Le 10/05/2022, à 09:22

bruno

Re : Compilation dédiée

Nuliel a écrit :

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.

Hors ligne

#11 Le 11/05/2022, à 20: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