2010-12-06 4 views
7

Comment puis-je compiler mes fichiers C++ pour qu'ils fonctionnent sur TOUTES les distributions Linux. La machine sur laquelle je vais les compiler est Ubuntu 10.10Compilez C++ pour toutes les distributions Linux

Si je les compile sur Ubuntu 10.10, vont-ils travailler sur d'autres Distros comme les distributions Ubuntu, Fedora, Debian, non Debian, etc?

Répondre

7
% gcc -o foo foo.c -static 

le binaire résultant devrait fonctionner sur la plupart des distros, étant donné qu'il fonctionne sur la même architecture (64 bits, 32 bits, bras, MIPS, etc.). Le point principal est: puisque vous ne savez pas ce que l'on peut trouver sur les systèmes cibles à l'avance, vous devez regrouper tout ce que vous pouvez dans le binaire que vous expédiez ou dans une sorte d'environnement "chrooté" où vous déployez aussi des libs externes (des choses qui ne peuvent pas être liées statiquement) et ensuite ayez une sorte de wrapper pour utiliser vos libs déployées au lieu des libs système.

+2

Cela fonctionnera pour C, mais pas pour C++. Voir http://www.trilithium.com/johan/2005/06/static-libstdc/ –

3

Bien que la réponse de @akira fonctionnera probablement pour votre cas, ce n'est pas la meilleure solution. La plupart des distributions Linux ont des systèmes d'emballage qui récupèrent les dépendances pour vous.

Si vous êtes sérieux au sujet de l'écriture de logiciels Linux qui est utilisé sur les boîtes d'autres personnes, vous devez regarder dans « GNU autotools » qui est ce qui motive la «./Configure & & faire tous & & make install chose qui vous aurez couru plus d'une fois maintenant!

+0

Umm, le projet n'est pas open source? – Daniel

+0

@Daniel vous seriez encore mieux d'utiliser Autotools vous-même, même si vous ne donnez pas le code gratuitement! Sinon, vous allez vous rendre la vie difficile lorsque les bibliothèques de votre code dépend du changement, mais comme je l'ai dit, @akira idea fera probablement ce que vous voulez. –

+0

Si son projet nécessite Autotools, qui est sous GPL, même si c'est juste pour construire son logiciel avant la distribution, est-il légal que son propre logiciel soit sous une licence incompatible avec la GPL? (Ceci est une question sérieuse, pas GPL flammebait.) – gotgenes

1

Si vous utilisez uniquement les bibliothèques répertoriées dans la base de normes Linux, un exécutable dynamique devrait fonctionner correctement.

Pour les autres bibliothèques, liez-les avec des versions statiques ou expédiez des bibliothèques dynamiques; Je préfère l'ancien.

Personnellement, je recommande d'éviter l'électricité statique reliant la bibliothèque C, car cela empêche certaines fonctionnalités utiles fournies par ce travail, par exemple la substance nss ..

Questions connexes