faça o downgrade de gcc / g ++ após a atualização; erro do compilador


1

Acabei de atualizar o gcc / g ++ de 4.4 para 4.8 (através deste método Como atualizar o gcc para a versão mais recente do Ubuntu 10.04? ). Percebi que o 4.8 quebraria muito do meu código e agora quero reverter para o 4.4. Ao remover o sudo-apt-get 4.8 e limpar / alterar minhas alternativas de atualização, devo estar "de volta ao normal". No entanto, tenho algum erro do compilador:

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.

o que estou perdendo? O que mudou? Como posso consertar isso? (Não tenho certeza de quão vaga é essa pergunta, por isso, se você precisar de mais informações, deixe-me saber).

Respostas:


1

Aparentemente, isso não é nada fácil. Eu apenas tive que absorver e reintegrar o Ubuntu.


0

Na verdade, faço isso o tempo todo no Ubuntu 10.04 e parece funcionar bem. Entre as compilações, faço uma compilação realmente limpa e excluo todos os artefatos, para que não haja uma mistura de arquivos compilados com e sem o compilador mais recente.

Eu instalo o compilador mais recente usando:

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

e desinstale-o usando

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

mas execute a desinstalação três vezes consecutivas para se livrar de todas as dependências instaladas.

No entanto, estou usando os binutils mais recentes (2.22-4ubuntu1 ~ 10.04.1) com o GCC 4.4.3 e o GCC 4.8.0 e os binutils mais recentes podem exigir uma ligação mais explícita que a antiga. Eu começaria atualizando o binutils e faria com que tudo fosse compilado no 4.4.x primeiro.

O 4.8.xe superior detecta muito mais problemas de código; portanto, eu o usaria para pelo menos validar o código 4.4.x se você tiver que ficar com o compilador mais antigo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.