Compilations et static builds ?

Répondre
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par dricfr »

Salut,

Je suis confronté , ça y est, à un problème d'obsolescence d'un logiciel (libav pour ne pas le nommer).
Le problème est qu'aujourd'hui la version "maximale" est trop ancienne et qu'il n'est pas à l'ordre du jour de changer l'OS qui est une debain 6 (oui, oui...).
Du coup, je me suis dit que je pourrais essayer de faire une compilation "maison", avec les librairies statiques inclues etc...
Mais, d'une part, j'ai un doute quand même sur la rétro compatibilité, même comme ça.
Faut-il impérativement avoir le même noyau sur le poste de compilation que sur la version cible ?
Est-ce que les librairies comme la libc sont également inclues dans le binaire final ? Car c'est essentiellement elle qui "bloque" du fait qu'elle est pas mal liée au système (ou vis-versa).

Sur le site de ffmeg, donc libav est un fork, il y a un tuto sur la compilation depuis les sources, même ils partent du principes qu'on compile sur la même version de l'os que sur la cible.

L'idée étant de savoir s'il vaut mieux compiler en static sur une version de debian plus récente et "simplement" récupérer le binaire.
Ou, rester une debian6 est importer toutes les sources dessus et tout compiler dessus. Je ne crois pas que ça marcherait, en particulier et entre autre à cause de la libc.
En plus, il y a un certains d'ombre d'outils à installer, et donc dans le second cas à recompiler, (make, les builds essentiel, les headers etc....)

Merci de vos conseils avisés.
[:cereal_killer:1]
Avatar de l’utilisateur
augur1
Messages : 13167
Inscription : ven. 12 janv. 2018 17:44
Localisation : où tout est neuf et tout est sauvage
Contact :

Compilations et static builds ?

Message par augur1 »

tu veux faire quoi ?
Avatar de l’utilisateur
dsebire
Messages : 13158
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

Compilations et static builds ?

Message par dsebire »

Euh.....
Debian6, meme en lts, n'est plus supporté.
T'es sur que tu veux rester la dessus ?

Sinon, je partirais sur un clone de ta machine pour avoir la base, mais tu vas avoir des soucis de version des dépendances a un moment ou un autre :(
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par dricfr »

Hélas, oui, Debian 6 va rester encore un moment. Toutes les opérations de migrations ont été arrêtées car jugées non critiques.
Sachant que les repos de cette version sont passées dans archive et qu'il n'y a plus de fix de sécurité, je ne sais pas comment ils ont pu arriver à cette conclusion. bref.

L'idée est d'exécuter une version récente de libav (avconv), par exemple la 9 ou la 10 sur debian 6 où la dernière version dans les repos est la 8.17.

Le gros soucis vient du streaming par http download qui ne marche pas bien car les infos ne sont pas optimisées dans le conteneur. Et c'est quand même la loose en 2016 de devoir attendre qu'une vidéo soit entièrement téléchargée avant de commencer à la jouer.
Un autre soucis avec le son en 5.1 qui plante, j'ai fait une verrue pour switché la lib en détectant le ombre de chan, mais je préférerais utiliser la solution des développeurs du logiciel (certainement bien mieux codée).
Sans compter tous les fix.

Les machines d'encodages sont des VM, j'ai donc pu les cloner. Mais l'arbre de dépendances pour compiler devient vite compliquer. J'étais donc parti sur une idée "bête". Un programme compiler en lien static pour une archi devrait, à priori, s'exécuter sur cette archi, même si le binaire finit par peser 200Mo à force d'inclure les libs.
Avatar de l’utilisateur
dsebire
Messages : 13158
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

Compilations et static builds ?

Message par dsebire »

oui, ça marcherait.
par contre, précise bien a tes supérieurs que c'est a leurs risques et périls.
tu vas pas prendre le support debian6 a ta charge
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par dricfr »

Oui, merci de l'avertissement. Je peux leur dire.
Mais, ça devrait pas changer d'aujourd'hui, les machines sont sous deb6 et vont le rester. Comme il n'y a pas de licence à payer, tout le monde s'en tape un peu. Je pourrais ne rien faire d'ailleurs, mais ça me casse les pieds de rester dans cet état.

J'ai trouvé un site où un gars a fait le job :
https://www.johnvansickle.com/libav/

Je vais essayer de voir si ça fonctionne avec un de ses exécutables. SI oui, j'essaierai de le refaire. Au moins je saurai si c'est faisable.

Ca fait tellement longtemps que je n'ai plus rien compiler, j'ai le trac ^^'

Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par Zedoune »

Je crois que ça peut marcher tant que l'ABI de la libc reste compatible.
Sinon tu peux ptet tenter de faire un chroot debian6 pour appeler ton avconv
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par dricfr »

Je ne connais pas ce que l'ABI est. Je vais regarder tout de suite. Merci de l'info.
gizmo78
Messages : 20534
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par gizmo78 »

je dirais l'API non?
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par dricfr »

Alors, si j'ai bien compris, l'ABI c'est pour le C++, avconv est en C "pur et dur" comme le disent les dév du logiciel. Je ne sais pas si c'est important.
gizmo78 > Oui, dans le genre.
dricfr
Messages : 5014
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par dricfr »

Alors, si j'ai bien compris, l'ABI c'est pour le C++, avconv est en C "pur et dur" comme le disent les dév du logiciel. Je ne sais pas si c'est important.
gizmo78 > Oui, dans le genre.
[cpp]Furthermore, C++ source that is compiled into object files is transformed by the compiler: it arranges objects with specific alignment and in a particular layout, mangling names according to a well-defined algorithm, has specific arrangements for the support of virtual functions, etc. These details are defined as the compiler Application Binary Interface, or ABI. The GNU C++ compiler uses an industry-standard C++ ABI starting with version 3. Details can be found in the ABI specification. [/cpp]
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

Compilations et static builds ?

Message par Zedoune »

https://fr.wikipedia.org/wiki/Applicati ... _interface

L'ABI ne concerne pas que le C++. En très gros, c'est la compatibilité entre un binaire et les librairies du système, ça change très rarement.
Répondre