Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

235
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda