1 votes

rétrograder gcc/g++ après la mise à jour ; erreur de compilation

Je viens de mettre à jour gcc/g++ de 4.4 à 4.8 (via cette méthode Comment mettre à jour gcc vers la dernière version dans Ubuntu 10.04 ? ). J'ai réalisé que la 4.8 allait casser une grande partie de mon code et je veux maintenant revenir à la 4.4. En supprimant la 4.8 par sudo-apt-get et en effaçant/modifiant mes alternatives de mise à jour, je devrais être "de retour à la normale". Cependant, j'ai une erreur de compilation :

scons: done reading SConscript files.
scons: Building targets ...
g++ -o src/common/Obstacle/obj/libObstacle.so -Wl,-rpath=lib -Wl,-rpath=/usr/local/lib -Wl,-E -pthread -shared src/common/Obstacle/obj/Obstacle.os -Llib -L/usr/local/lib -lGL -lglut -lWorldModel
g++ -o src/common/MotionCommands/obj/libMotionCommands.so -Wl,-rpath=lib -Wl,-rpath=/usr/local/lib -Wl,-E -pthread -shared src/common/MotionCommands/obj/MotionCommands.os -Llib -L/usr/local/lib -lWorldModel
g++ -o src/xyz/AlignTool/obj/AlignTool -Wl,-rpath=lib -Wl,-rpath=/usr/local/lib -Wl,-E -pthread src/xyz/AlignTool/obj/AlignTool.o -Llib -L/usr/local/lib -ltask -lboost_serialization -lrecgeometry -lMovingTarget
/usr/bin/ld: src/xyz/AlignTool/obj/AlignTool.o: undefined reference to symbol 'ConfigSection::getCValue(unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool&, bool)'
/usr/bin/ld: note: 'ConfigSection::getCValue(unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool&, bool)' is defined in DSO lib/libconfig.so so try adding it to the linker command line
lib/libconfig.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
g++ -o src/behaviors/obj/DK.o -c -fPIC -Wall -Winit-self -O3 -g3 -pthread -Isrc/common -Ibackground/include -I/usr/lib/ruby/1.8/x86_64-linux src/behaviors/DK.cc
scons: *** [src/xyz/AlignTool/obj/AlignTool] Error 1
scons: building terminated because of errors.

Qu'est-ce que je manque ? Qu'est-ce qui a changé ? Comment puis-je résoudre ce problème ? (Je ne suis pas sûr que cette question soit très vague, donc si vous avez besoin de plus d'informations, faites-le moi savoir).

1voto

tir38 Points 2391

Apparemment, ce n'est pas du tout facile. J'ai dû me résigner et réinstaller Ubuntu.

0voto

Steve Points 1

En fait, je fais cela tout le temps dans Ubuntu 10.04 et cela semble fonctionner correctement. Entre les compilations, je fais une compilation vraiment propre et je supprime tous les artefacts pour qu'il n'y ait pas de mélange de fichiers compilés avec et sans le nouveau compilateur.

J'installe le compilateur le plus récent en utilisant :

sudo apt-get install g++-4.8 gcc-4.8

et le désinstaller en utilisant

sudo apt-get autoremove g++-4.8 gcc-4.8 libstdc++-4.8-dev

mais lancez la désinstallation trois fois de suite pour vous débarrasser de toutes les dépendances installées.

J'utilise cependant la version la plus récente de binutils (2.22-4ubuntu1~10.04.1) avec GCC 4.4.3 et GCC 4.8.0 et les nouveaux binutils peuvent nécessiter des liens plus explicites que les anciens. Je commencerais par mettre à jour binutils et faire en sorte que tout compile en 4.4.x.

La version 4.8.x et les versions ultérieures corrigent beaucoup plus de problèmes de code. Je l'utiliserais donc pour au moins valider votre code 4.4.x si vous devez vous en tenir à l'ancien compilateur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X