J'ai donc un projet que j'ai compilé sur le compilateur apple-darwin11-llvm-g ++ - 4.2. Le projet compilera avec GCC 4.4.5 sur RedHat Linux mais il y a des choses très étranges qui se passent dans le runtime. Il n'y a pas d'erreurs d'exécution, mais la sortie du programme est complètement différente. Je suis assez terrible avec GDB donc je suis et j'ai besoin de soumettre ce projet avant minuit ce soir pour l'école. Est-ce que quelqu'un pourrait suggérer des choses qui viennent à l'esprit qui pourraient causer cela? Peut-être quelques différences connues entre ces deux compilateurs qui pourraient me donner un endroit pour regarder? Je me rends compte que c'est très vague, j'essaie d'apprendre à utiliser gdb afin que je puisse comprendre ce qui se passe.Problèmes d'exécution dans GCC 4.4.5 sur RedHat, mais fonctionne correctement sur Apple llvm 4.2?
Répondre
Pour résoudre ce problème, je suis passé par la liste de contrôle proposée par @AdrianCornish.
« Si la sortie du programme ne sont pas les mêmes, alors il est très probable que vous vous détournez la langue et causeraient un comportement non défini Il est Vous avez probablement initialisé toutes les variables avant l'utilisation? Allouez-vous et utilisez-vous la mémoire correctement dans les limites.Les variables de la fonction sont-elles initialisées aux valeurs par défaut? " - Par Adrian Cornish
J'ai découvert qu'il y avait une variable entière que j'avais oublié d'initialiser à zéro dans mon constructeur. Apparemment, le llvm initialisera automatiquement les variables à zéro, contrairement à gcc.
Content que tu l'aies trouvé :-) –
Comme trouvé par @weezbizzle - les compilateurs se comportent différemment et un par défaut initialise les variables membres.
- 1. Xcode 4.1: Apple LLVM 2.1 se comporte différemment de LLVM GCC 4.2 et GCC 4.2
- 2. LLVM GCC 4.2 EXC_BAD_ACCESS
- 3. -forwardInvocation fonctionne avec Clang - LLVM mais pas avec GCC
- 4. Compilation de gcc 4.2 de LLVM 2.9 sur le noyau 3.0 avec gcc 4.6
- 5. llvm-gcc-4.2 a échoué avec l'erreur xcode dans l'iphone
- 6. compilation étrange de réunion en ligne dans LLVM GCC 4.2
- 7. _GLIBCXX_ATOMIC_BUILTINS non défini dans gcc 4.4.5
- 8. Utilisation de GCC 4.2 dans Xcode 4.2 iOS SDK 5.0
- 9. Pourquoi ce code plante-t-il lorsqu'il est compilé avec Apple LLVM, mais pas dans LLVM/GCC?
- 10. Apple LLVM compilateur 3.0 Erreur vient dans IPhone Phonegap BarcodeScannerplugin
- 11. Mise à jour de Apple g ++/gcc
- 12. Apple Error LLVM 3.1
- 13. XCode 4.2 build a échoué avec le code d'erreur 1 (pas de problèmes), mais fonctionne sur XCode 3.2.6
- 14. Comment installer PHP SOAP sur RedHat 5
- 15. GData ne compile pas avec Apple LLVM 4.1
- 16. Que se passe-t-il dans l'assemblage Apple LLVM-gcc x86?
- 17. comparaison des performances - gcc et llvm-gcc
- 18. La compilation avec LLVM/Clang provoque un plantage, pas GCC 4.2
- 19. Bibliothèque standard C++ trouvée dans les fichiers .mm mais pas dans le fichier .h (Xcode 4.5 LLVM GCC 4.2)
- 20. Problèmes GCC, génère différentes sorties sur 2 systèmes différents (mais similaires)
- 21. Compatibilité entre GCC et LLVM
- 22. Xcode 3.2.1 GCC CLANG et LLVM démystification
- 23. Déterminer LLVM GCC par rapport au moment de la compilation
- 24. apple llvm compiler 4.0 erreur
- 25. application fonctionnait bien sur 4.2 mais ne fonctionne pas sur 4.3.3 - iphone
- 26. Programme généré par mkbundle (à partir du programme C#) fonctionne sur Ubuntu, mais ne fonctionne pas sur Redhat
- 27. Construire 32 bits avec llvm-gcc 64 bits
- 28. Problème de compilation lors de l'utilisation de blocs avec LLVM GCC 4.2
- 29. C++ modèle fonctionne bien pour GCC, mais montrant erreur de compilation de temps dans le compilateur LLVM-GCC
- 30. Où est-apple-darwin11-llvm-g ++ - 4.2 ou où puis-je changer le compilateur?
Recevez-vous des avertissements de compilateur? – Pubby
Si la sortie du programme n'est pas la même, il est très probable que vous utilisiez la langue de manière incorrecte et que vous causiez un comportement indéfini. Il est très peu probable que ce soit une différence dans les compilateurs. Avez-vous initialisé toutes les variables avant utilisation? Est-ce que vous allouez et utilisez la mémoire correctement dans les limites. Les variables dans la fonction sont-elles initialisées aux valeurs par défaut? –
Les deux compilent-ils 64 bits? Avez-vous essayé l'analyseur statique? –