2009-11-18 24 views
0

J'ai quelques gars ici qui ont du code qui doit être compilé avec gcc-3.3. Nous avons un CentOS 5.2. Lorsque nous le compilons avec leurs fichiers make, ils échouent pendant le lien et ils disent que c'est parce qu'il ne fonctionnera pas avec gcc-3.4 qui est déjà installé. Y at-il quelque chose que je dois leur dire de changer pour y arriver, ou est-il possible de trouver gcc-3.3 en tant que rpm et de l'installer? Je suppose, au départ, je demande quelle est la différence entre gcc-3.3 et gcc-3.4 puisque 3.3 n'est pas dans le média d'installation de CentOS 5.2.versions du compilateur

Ou comment compat-gcc-3.2 peut-il être installé sur une distribution qui a également compat-gcc-3.4?

AJOUTEE:

L'erreur est

/usr/include/c++/3.2.3/bits/stl_alloc.h:248: undefined reference to std::__default_alloc_template<true, 0>::deallocate(void *, unsigned int)

donc je me méfie de peut-être les mauvaises têtes ou les bibliothèques liées. En installant compat-gcc-32, le code compile et lie, mais ensuite segfaults quand il essaie de faire des opérations de chaînes. Il est probable que le premier accès à tout ce qui est cassé se trouve être une manipulation de chaîne quelconque.

+2

Vous pouvez poster des messages d'erreur. Si nous voyons les erreurs, nous pourrions être en mesure de donner des indices sur ce qui ne va vraiment pas. Sans cela, nous ne pouvons pas vraiment commenter sur la fixation du code. –

+1

Bon, c'est une mauvaise idée d'essayer de compiler avec les anciens compilateurs, car ce vieux code va continuer à se rompre avec le temps. Devrait être facile à réparer pour nouveau gcc. –

+0

Merci pour le conseil. –

Répondre

2

La différence entre gcc-3.3 et 3.4 en interne est grande: gcc-3.4 a complètement ré-implémenté le frontal C/C++.

La différence pour un programme raisonnablement conforme aux normes devrait être inexistante. Code qui construit avec 3.3 et ne parvient pas à construire avec 3.4 est très probablement cassé, et votre meilleur pari est d'avoir les développeurs à corriger ce code.

Si vous ne pouvez pas le faire, alors il suffit de construire GCC-3.3 de la source:

tar xzf gcc-3.3.tar.gz && cd gcc-3.3 && 
./configure --prefix /usr/local/gcc-3.3 --enable-languages=c,c++ && 
make && make install 

puis construire le code "cassé" avec PATH=/usr/local/gcc-3.3/bin:$PATH make

0

Je doute que vous trouverez des RPM pour GCC 3.3 qui peuvent être installés à côté des RPM GCC 3.4 existants dans votre installation de CentOS. J'installerais probablement GCC 3.3 depuis la source pour éviter de jouer avec différentes versions de GCC dans la base de données RPM.