Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

236
Visualizações
¿Cómo implementar un servidor de juegos SFML en un servidor Linux?

Escribí un mini juego cliente-servidor que funciona bien en mis computadoras (con Linux), ya que instalé SFML (y GCC 4.8) tanto en el Cliente como en el Servidor. Ahora quiero implementar la aplicación del servidor en otro Linux que no tenga SFML.

Primero traté de vincular dinámicamente las bibliotecas SFML utilizadas (red y sistema):

 g++ server.cpp -o ServerLinux -std=c++11 -Os -lsfml-network -lsfml-system

Pero cuando ejecuto la aplicación del servidor dice que no pudo encontrar sfml-network.so.2 y sfml-system.so.2 aunque esos 2 archivos están en la misma carpeta del binario.

Luego vinculé estáticamente ambas bibliotecas:

 g++ -DSFML_STATIC server.cpp -o ServerLinux -std=c++11 -Os -lsfml-network-s -lsfml-system-s

Y luego, cuando lo ejecuto, dice que no pudo encontrar GLIBC_2.15 y GLIBC_2.17

Finalmente, en mi último intento, vinculé estáticamente tanto libstc++ como libgcc:

 g++ -DSFML_STATIC server.cpp -o ServerLinux -std=c++11 -Os -lsfml-network-s -lsfml-system-s -static-libstdc++ -static-libgcc

Pero sigo recibiendo el mismo error (no pude encontrar GLIBC_2.15 y GLIBC_2.17).

Al leer problemas similares, parece que nunca se debe hacer un enlace estático con glibc. Pero no sé cómo proceder, ¿cómo puedo implementar mi mini servidor de juegos en una caja Linux que no tiene SFML?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Los sistemas Linux buscan bibliotecas compartidas utilizando la variable de entorno LD_LIBRARY_PATH y no buscan automáticamente archivos binarios junto a la aplicación, como es el caso de Windows. Un método que se usa con mucha frecuencia para implementar bibliotecas compartidas es incluirlas en un subdirectorio o similar y, en lugar de iniciar la aplicación directamente, ejecutar un script de shell que agregaría el directorio con las bibliotecas temporalmente a ?LD_LIBRARY_PTH` y luego iniciar el solicitud.

El otro problema que está teniendo está relacionado con las dependencias.

Para las bibliotecas compartidas, no solo debe proporcionar las bibliotecas SFML compartidas, sino también las bibliotecas compartidas de las dependencias, a menos que pueda garantizar al 100 % que el sistema de destino tendrá la misma versión de biblioteca.

Si solo crea bibliotecas estáticas de SFML, aún apuntarán a bibliotecas de tiempo de ejecución compartidas y similares, por lo tanto, si no proporciona la versión correspondiente con la aplicación, simplemente no podrá iniciarse, ya que no puede encontrar la biblioteca. . Si vincula estáticamente con las bibliotecas en tiempo de ejecución, no necesitaría proporcionar bibliotecas compartidas para su aplicación , pero dado que las bibliotecas SFML todavía se vinculan dinámicamente con las bibliotecas en tiempo de ejecución, solicitan las bibliotecas compartidas de todos modos.

Entonces, si ya no desea compartir archivos de biblioteca, deberá vincular SFML estáticamente con la biblioteca en tiempo de ejecución (desmarque BUILD_SHARED_LIBS y marque SFML_USE_STATIC_STD_LIBS ).

Tenga en cuenta que al vincular estáticamente, deberá vincular estáticamente contra todas las dependencias; -static podría ser útil.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda