Compilations et static builds ?
Compilations et static builds ?
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]
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]
- augur1
- Messages : 13167
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : où tout est neuf et tout est sauvage
- Contact :
Compilations et static builds ?
tu veux faire quoi ?
- dsebire
- Messages : 13158
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Compilations et static builds ?
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
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

Compilations et static builds ?
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.
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.
- dsebire
- Messages : 13158
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Compilations et static builds ?
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
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
Compilations et static builds ?
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 ^^'
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 ^^'
Compilations et static builds ?
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
Sinon tu peux ptet tenter de faire un chroot debian6 pour appeler ton avconv
Compilations et static builds ?
Je ne connais pas ce que l'ABI est. Je vais regarder tout de suite. Merci de l'info.
Compilations et static builds ?
je dirais l'API non?
Compilations et static builds ?
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.
gizmo78 > Oui, dans le genre.
Compilations et static builds ?
[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]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.
Compilations et static builds ?
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.
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.