g ++ e impulsionar o erro do linker após a atualização

1

Estou com os problemas a seguir. Tenho certeza de que é um pacote que não foi instalado / atualizado corretamente, não sei qual:

$ make
g++ -I/usr/include/boost -MM ./YYY.cc ./main.cc ./myClass.cc > buildfiles.d
g++ -Wno-deprecated -Wall -ansi -O2 -I/usr/include/boost   -c -o YYY.o YYY.cc
g++ -Wno-deprecated -Wall -ansi -O2 -I/usr/include/boost   -c -o main.o main.cc
g++ -Wno-deprecated -Wall -ansi -O2 -I/usr/include/boost   -c -o myClass.o myClass.cc
g++ -o prog -Wno-deprecated -Wall -ansi -O2 -I/usr/include/boost -L/usr/lib -lstdc++ -lboost_program_options -lboost_thread ./YYY.o ./main.o ./myClass.o
./YYY.o: In function 'void boost::call_once<void (*)()>(boost::once_flag&, void (*)())':
YYY.cc:(.text._ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_[void boost::call_once<void (*)()>(boost::once_flag&, void (*)())]+0x14): undefined reference to 'boost::detail::get_once_per_thread_epoch()'
YYY.cc:(.text._ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_[void boost::call_once<void (*)()>(boost::once_flag&, void (*)())]+0x2c): undefined reference to 'boost::detail::once_epoch_mutex'
YYY.cc:(.text._ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_[void boost::call_once<void (*)()>(boost::once_flag&, void (*)())]+0x62): undefined reference to 'boost::detail::once_epoch_mutex'
YYY.cc:(.text._ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_[void boost::call_once<void (*)()>(boost::once_flag&, void (*)())]+0x67): undefined reference to 'boost::detail::once_epoch_cv'
YYY.cc:(.text._ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_[void boost::call_once<void (*)()>(boost::once_flag&, void (*)())]+0x95): undefined reference to 'boost::detail::once_epoch_mutex'
[...]

Apenas seja claro, os cabeçalhos são instalados e incluídos nos arquivos .h.

    
por Sardathrion 14.10.2011 / 10:29

1 resposta

1

A solução envolveu alterar a ordem de ligação, conforme a página do manual. A coisa é que costumava funcionar bem com uma versão mais antiga do g ++ ...

$ make
g++ -I/usr/include/boost -MM ./YYY.cc ./main.cc ./myClass.cc > buildfiles.d
g++ -ansi -O2 -Wall -I/usr/include/boost   -c -o main.o main.cc
g++ -ansi -O2 -Wall -I/usr/include/boost   -c -o myClass.o myClass.cc
g++ -o prog -ansi -O2 -Wall -I/usr/include/boost  ./YYY.o ./main.o ./myClass.o -lstdc++ -L/usr/lib -lboost_program_options -lboost_thread 
    
por Sardathrion 14.10.2011 / 12:43