2 votes

Comment construire et tester un programme C linux pour plusieurs architectures sans avoir à configurer un environnement pour chacune d'entre elles ?

Supposons que j'ai écrit un programme simple en C. Il se construit et s'exécute avec succès sur mon ordinateur principal.

Maintenant, je veux trouver sur quelles architectures le programme peut être construit et fonctionne ; également fournir des exécutables pré-construits pour le téléchargement pour une variété de plates-formes. Cependant, je n'en ai que quelques-unes.

Le moyen le plus évident semble être de mettre en place un nombre maximal de chaînes d'outils de compilation croisée et un nombre maximal d'images exécutables pour différentes architectures. Mais cela semble peu pratique (surtout si vous ne le voulez que pour un seul petit programme).

Comment le faire de manière simple ? Dois-je utiliser un service en ligne qui fournit des systèmes de développement déjà configurés pour diverses architectures ?

Je m'attendais à quelque chose comme ça :

user$ ssh i386.buildhere.example
guest@i386 $ echo 'int main(){}' > hello.c
guest@i386 $ gcc hello.c -o hello
guest@i386 $ ./hello
guest@i386 $ file hello
hello: ELF 32-bit LSB executable, Intel 8038....

user$ ssh armel.buildhere.example
guest@armel $ ....

...

Un bonus supplémentaire serait qu'il y ait également divers systèmes obsolètes disponibles pour tester "comment mon programme se comporterait sur cette ancienne distribution".

3voto

Mats Petersson Points 70074

Il y a une chose qui est PRESQUE certaine en programmation : Tout ce que vous faites pour tester quelque chose fonctionnera probablement, mais tout ce que vous n'avez pas testé échouera lorsque vous le donnerez à un client.

L'utilisation de machines virtuelles permettra dans une certaine mesure d'éviter d'avoir à acheter du matériel inhabituel, tout comme des choses comme QEMU.

À moins que votre programme ne soit VRAIMENT trivial ou que vous ne souhaitiez utiliser vos clients [1] comme cobayes, il est préférable de tester chaque type de plate-forme pour laquelle vous souhaitez publier une version. Si vous ne le faites pas, cela vous retombera dessus à un moment donné.

Si vous ne le faites pas, vous courez le risque que certains de vos clients aient une "expérience malheureuse". Un client malheureux le dit à dix personnes, un client heureux le dit peut-être à une personne.

Si vous souhaitez prendre en charge des architectures ou des éléments auxquels vous n'avez pas accès, il est peut-être préférable d'avoir une option "aidez-vous" du code source plutôt que des binaires téléchargeables.

Bien sûr, vous pouvez louer du temps/de l'espace sur des serveurs de différents types - j'ai cherché à écrire une application pour iPhone, et il existe des endroits qui font tourner des Mac en tant que machines virtuelles sur le net que vous pouvez louer pour environ 15 dollars par mois, par exemple.

[1] Dans cette réponse, par client, j'entends toute personne qui télécharge votre logiciel, qu'elle donne ou non de l'argent à quelqu'un, elle aura fait des efforts pour obtenir votre logiciel sur sa machine. S'il ne fonctionne pas, il sera mécontent à un certain degré. Le degré de mécontentement dépend d'un certain nombre de choses, notamment de la clarté avec laquelle vous avez indiqué que "cela peut ne pas fonctionner" si vous publiez un logiciel "non testé".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X