Ferramentas do usuário

Ferramentas do site


compilando_o_warzone2100_no_free_bsd

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Última revisão Ambos lados da revisão seguinte
compilando_o_warzone2100_no_free_bsd [2012/11/08 15:18]
cartola
compilando_o_warzone2100_no_free_bsd [2012/11/08 18:00]
cartola acertando versão wz e colocando do fbsd
Linha 1: Linha 1:
  
-======= Compilando a versão 3.0rc3 =======+======= Compilando a versão 3.1_rc3 =======
  
  
-O [[http://wz2100.net|warzone2100]] já está portado para o FreeBSD há algum tempo, mas em geral o pessoal demora um pouco para atualizar a versão. Resolvi então compilar a versão 3.0rc3 do jogo e depois de alguns percalços resolvi compartilhar aqui o que fiz, pois não é tarefa muito óbvia. Em caso de dúvidas, críticas e sugestões entre em contato comigo pelo email {{arquivo:meuend.png}}+O [[http://wz2100.net|warzone2100]] já está portado para o FreeBSD há algum tempo, mas em geral o pessoal demora um pouco para atualizar a versão. Resolvi então compilar a versão 3.1_rc3 do jogo e depois de alguns percalços resolvi compartilhar aqui o que fiz, pois não é tarefa muito óbvia. Em caso de dúvidas, críticas e sugestões entre em contato comigo pelo email {{arquivo:meuend.png}} 
 + 
 +O FreeBSD onde esta compilação foi feita foi um 9.1-RC1.
  
  
Linha 74: Linha 76:
  
  
-O problema de usar mais de uma versão de gcc é que a biblioteca lstdc++ encontrada por padrão mesmo pelas novas versões instaladas é a original. A única maneira que encontrei, por enquanto, para resolver isso é executar manualmente a última etapa de compilação colocando parâmetros nos locais corretos para que a lstdc++ encontrada seja a correspondente ao compilador usado.+O problema de usar mais de uma versão de gcc é que a biblioteca lstdc++ encontrada por padrão mesmo pelas novas versões instaladas é a original. A única maneira que encontrei, por enquanto, para resolver isso é executar manualmente a última etapa de compilação colocando parâmetros nos locais corretos para que a lstdc++ encontrada seja a correspondente ao compilador usado. O erro indica que o compilador não encontrou algumas referências a objetos: 
 + 
 +| | astar.o: In function `std::list<PathBlockingMap, std::allocator<PathBlockingMap> >::swap(std::list<PathBlockingMap, std::allocator<PathBlockingMap> >&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1213: undefined reference to `std::__detail::_List_node_base::swap(std::__detail::_List_node_base&, std::__detail::_List_node_base&)'astar.o: In function `std::list<PathfindContext, std::allocator<PathfindContext> >::_M_insert(std::_List_iterator<PathfindContext>, PathfindContext const&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1551: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'astar.o: In function `std::list<PathfindContext, std::allocator<PathfindContext> >::_M_transfer(std::_List_iterator<PathfindContext>, std::_List_iterator<PathfindContext>, std::_List_iterator<PathfindContext>)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1543: undefined reference to `std::__detail::_List_node_base::_M_transfer(std::__detail::_List_node_base*, std::__detail::_List_node_base*)'astar.o: In function `std::list<PathBlockingMap, std::allocator<PathBlockingMap> >::_M_insert(std::_List_iterator<PathBlockingMap>, PathBlockingMap const&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1551: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'design.o: In function `std::list<DROID_TEMPLATE, std::allocator<DROID_TEMPLATE> >::_M_erase(std::_List_iterator<DROID_TEMPLATE>)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1567: undefined reference to `std::__detail::_List_node_base::_M_unhook()'design.o: In function `std::list<DROID_TEMPLATE, std::allocator<DROID_TEMPLATE> >::_M_insert(std::_List_iterator<DROID_TEMPLATE>, DROID_TEMPLATE const&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1551: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'fpath.o: In function `std::list<PATHRESULT, std::allocator<PATHRESULT> >::_M_insert(std::_List_iterator<PATHRESULT>, PATHRESULT const&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1551: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'fpath.o: In function `std::list<PATHJOB, std::allocator<PATHJOB> >::_M_erase(std::_List_iterator<PATHJOB>)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1567: undefined reference to `std::__detail::_List_node_base::_M_unhook()'fpath.o: In function `std::list<PATHRESULT, std::allocator<PATHRESULT> >::_M_erase(std::_List_iterator<PATHRESULT>)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1567: undefined reference to `std::__detail::_List_node_base::_M_unhook()'fpath.o: In function `std::list<PATHJOB, std::allocator<PATHJOB> >::_M_insert(std::_List_iterator<PATHJOB>, PATHJOB const&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1551: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'scriptvals.o: In function `std::list<INTERP_VAL*, std::allocator<INTERP_VAL*> >::_M_insert(std::_List_iterator<INTERP_VAL*>, INTERP_VAL* const&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1551: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'scriptvals.o: In function `std::list<INTERP_VAL*, std::allocator<INTERP_VAL*> >::_M_erase(std::_List_iterator<INTERP_VAL*>)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1567: undefined reference to `std::__detail::_List_node_base::_M_unhook()'../lib/netplay/libnetplay.a(netqueue.o): In function `std::list<NetMessage, std::allocator<NetMessage> >::_M_insert(std::_List_iterator<NetMessage>, NetMessage const&)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1551: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'../lib/netplay/libnetplay.a(netqueue.o): In function `std::list<NetMessage, std::allocator<NetMessage> >::_M_erase(std::_List_iterator<NetMessage>)':/usr/local/lib/gcc48/include/c++/bits/stl_list.h:1567: undefined reference to `std::__detail::_List_node_base::_M_unhook()'collect2: error: ld returned 1 exit status<nowiki>***</nowiki>Stop in /dados/download/warzone2100-3.1_rc3-ok_sem_rede/src.<nowiki>***</nowiki>Stop in /dados/download/warzone2100-3.1_rc3-ok_sem_rede/src.<nowiki>***</nowiki>Stop in /dados/download/warzone2100-3.1_rc3-ok_sem_rede.<nowiki>***</nowiki>Stop in /dados/download/warzone2100-3.1_rc3-ok_sem_rede. | 
  
 Pouco antes do erro de compilação apresentado podemos ver uma linha gigante com o comando utilizado. É necessário copiá-la e colocá-la num arquivo para editarmos. A linha que obtive foi essa: Pouco antes do erro de compilação apresentado podemos ver uma linha gigante com o comando utilizado. É necessário copiá-la e colocá-la num arquivo para editarmos. A linha que obtive foi essa:
compilando_o_warzone2100_no_free_bsd.txt · Última modificação: 2012/11/13 10:32 por cartola