Bien que peu expérimenté, je ne comprends toujours pas s'il est nécessaire d'installer une application et/ou de construire un programme C++ ou une bibliothèque C++ sous Network File Système partagé par des machines, qui ont une version Linux différente (par exemple CentOS version 4.7, Ubuntu 8.10), éventuellement un bit différent (par exemple 32 bits, 64 bits) et différentes versions du compilateur (par exemple gcc/g ++ 3.4.6 20060404 (Red Hat 3.4.6-10), gcc/g ++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2.), De sorte que les fichiers exécutables ou de bibliothèque peuvent être utilisés sous ces machines différentes? Quels sont les principes ici? Par exemple, sur un système de fichiers réseau, j'ai un exécutable construit à partir de mon programme C++ sous une machine avec CentOS version 4.7, x86_64 ad gcc/g ++ 3.4.6 20060404 (Red Hat 3.4.6-10). Je trouve avec surprise que l'exécutable peut être utilisé sous une autre machine avec Ubuntu 8.10, x86_64 et gcc/g ++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2. De plus, toutes les bibliothèques partagées que j'ai construites sur la première machine et utilisées par mon programme ne se plaignent pas d'erreur lorsque l'exécutable s'exécute sur la seconde machine. Je suis si inquiet si le fonctionnement de l'exécutable construit sur une machine différente donnera des résultats fiables?créer un programme et installer un logiciel sous Network File System pour différentes machines
Un autre exemple, je me souviens d'un exécutable construit sur une machine 64 bits ne peut pas fonctionner sur une machine 32 bits. Mais qu'en est-il de l'inverse, exécutant sur une machine 64 bits un exécutable construit sur une machine 32 bits? Qu'en est-il des fichiers de bibliothèque C++ construits et utilisés sur différentes machines binaires?
Si possible, pouvez-vous me diriger vers une référence, comme une page Web, un livre, ... qui sont liés à mes questions?
Merci pour votre intérêt!
Ai-je raison de dire que ce problème de compatibilité n'est presque jamais garanti, la manière la plus sûre est de construire une version pour chaque machine? Par exemple, si j'ai une bibliothèque C++ et deux machines pour le NFS, je devrai le construire dans ~/libraries/host1/mylibrary/et ~/libraries/host2/mylibrary /.Lorsque mon programme C++ utilise cette bibliothèque, comment écrire un Makefile qui détecte la machine actuelle et affecter le bon chemin à la bibliothèque pour -L et -I? – Tim
Eh bien, pour obtenir la garantie, vous devez faire vos devoirs et tester. Si vous voulez construire pour chaque machine, pensez à utiliser GNU autoconf et automake. Autoconf a été conçu pour ce problème. Vous finissez par créer et utiliser un script configure, comme la plupart des paquets source Linux que vous téléchargez. Si vous avez beaucoup de machines différentes à construire ou si vous avez l'intention de distribuer ce programme à d'autres, c'est ce qu'il vous faut. Mais, utiliser autoconf n'est pas trivial si vous ne l'avez jamais fait auparavant. Si vous voulez juste écrire les Makefiles manuellement, vous pouvez utiliser des commandes de shell pour obtenir des informations sur le système. –