Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: gecko on October 19, 2017, 02:30:42 PM

Title: Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: gecko on October 19, 2017, 02:30:42 PM
Hola! antes que nada aclaro que no tengo mucha experiencia compilando desde 0 en C o linux, asi que perdón si pregunto o hago alguna burrada.

Me está dando error la compilación de BennuGD a partir de los fuentes, en un Ubuntu limpio. Presumo que viene por el lado de libssl, pero no hice nada raro al instalarla.

Los pasos que seguí fueron:

Copio el ultimo pedazo del log, donde marca el error:

/bin/bash ../../libtool  --tag=CC   --mode=link gcc  -g -O2 -finline-functions -fno-strict-aliasing    -o bgdc main.o main_core.o token.o identifier.o segment.o constants.o strings.o varspace.o procedure.o codeblock.o c_main.o c_data.o c_code.o c_debug.o dcbw.o error.o sysstub.o typedef.o debug.o b_crypt.o files.o xctype.o -lc -ldl -lz   

libtool: link: gcc -g -O2 -finline-functions -fno-strict-aliasing -o bgdc main.o main_core.o token.o identifier.o segment.o constants.o strings.o varspace.o procedure.o codeblock.o c_main.o c_data.o c_code.o c_debug.o dcbw.o error.o sysstub.o typedef.o debug.o b_crypt.o files.o xctype.o  -lc -ldl -lz

b_crypt.o: In function `crypt_create':
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:60: undefined reference to `DES_key_sched'
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:61: undefined reference to `DES_key_sched'
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:62: undefined reference to `DES_key_sched'

b_crypt.o: In function `crypt_data':
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:113: undefined reference to `DES_ecb_encrypt'
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:114: undefined reference to `DES_ecb_encrypt'
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:115: undefined reference to `DES_ecb_encrypt'
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:95: undefined reference to `DES_ecb_encrypt'
/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:101: undefined reference to `DES_ecb_encrypt'

b_crypt.o:/home/travis/build/tehuel/bennugd/core/bgdc/src/../../common/b_crypt.c:125: more undefined references to `DES_ecb_encrypt' follow

collect2: error: ld returned 1 exit status
make[2]: *** [bgdc] Error 1
make[2]: Leaving directory `/home/travis/build/tehuel/bennugd/core/bgdc/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/travis/build/tehuel/bennugd/core/bgdc'
make: *** [all-recursive] Error 1
*** ABORT ***


El build se corrió en Travis, asi que pueden ver el log completo (https://travis-ci.org/tehuel/bennugd/jobs/290002860) y la configuracion con la que se ejecutó (https://travis-ci.org/tehuel/bennugd/jobs/290002860/config).

Alguna idea de como salvar o corregir esto? alguna ayuda? no tengo idea para donde arrancar a mirar...  :-\
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: l1nk3rn3l on October 19, 2017, 03:21:35 PM
creo se puede omitir la compilacion del modulo mod_crypt , preguntale al Maestro Splinter
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: daltomi on October 22, 2017, 12:05:21 AM
Hola

Intenta solamente con ./build-linux.sh release (https://github.com/tehuel/bennugd/blob/master/build-linux.sh#L13)
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: SplinterGU on October 22, 2017, 04:09:42 AM
eso iba a decir...

la lib que falta no es la ssl... creo que es la crypto u openssl...
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: Futu-block on October 23, 2017, 07:53:03 AM
a mi la librería que me falló fué libpng12-0:i386:
(http://pix.toile-libre.org/upload/original/1508744857.png)
por lo demas y siguiendo el tutorial de torresbaldi.com no hubo problemas, en todo caso me descargué todo lo que no habia en los escritos de todas partes posibles y seguí intucciones como estas
(http://pix.toile-libre.org/upload/original/1508745014.png)
que inmediatamente pone que para correr 32 bits en 64 tienes que descargarte (entre otras) la librería de arriba mencionada y tal y tal...

el unico problema que me está dando ahora es que puedo compilar en una ''carpeta maestra'' pero cuando copio-pego los archivos en otra carpeta, no funca; no se si son las librerias que faltan en esa misma carpeta o yoquese
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: gecko on October 23, 2017, 10:24:29 PM
Bueno, sigo sin poder hacerlo andar.

Tengo instalado openssl (https://packages.ubuntu.com/xenial/openssl) y libssl-dev (https://packages.ubuntu.com/xenial/libssl-dev), este ultimo paquete es el que incluye des.h, que es una cabecera que se está referenciando en bennugd/core/include/b_crypt.h, que a su vez es una cabecera que se está referenciando en bennugd/core/common/b_crypt.c, que es donde la compilación está explotando.

Puede ser que esas llamadas a funciones que está haciendo Bennu ya no existan (o hayan cambiado) en alguna version de libssl-dev? Algo más que pueda hacer con esto? Deberia probar hacerlo compilar instalando una version vieja de ssl? Hay algun otro dato que pueda darles para que me ayuden a diagnosticar esto?

Disculpen las molestias y gracias por la ayuda.
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: Futu-block on October 24, 2017, 08:02:41 AM
¿te has descargado todas las librerias y binarios y los has instalado en el pc?
¿has hecho lo de los 64 bits?
(http://storage2.static.itmages.com/i/17/1024/h_1508832034_1726675_13966525e2.png)

Lo digo porque no hace ni dos semanas que lo instalé y funciona en mi ubuntu 10.04 64 bits, sino haz lo de 'sudo get-apt install' las librerias que te falten
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: gecko on October 24, 2017, 11:19:47 AM
Gracias por la ayuda Futu, pero no es "compilar un juego hecho con BennuGD" lo que quiero hacer, sino "compilar el mismisimo BennuGD" (a partir de su código fuente, en lenguaje C).
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: daltomi on October 24, 2017, 12:39:27 PM
Hola.

Estuve viendo el log de travis, dice que apt-get falla en la instalación de las libs, es decir, que openssl para 32bits nunca se instala. ¿es asi o ya lo instalaste anteriormente?
Otra cosa, esto esta mal en apt-get: libsdl1.2-dev libsdl-mixer1.2-dev, debería ser -dev:i386

Puedes ejecutar en la terminal lo siguiente para ver si libcrypto de 32 bits esta instalado:

PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig pkg-config --cflags --libs libcrypto


Y si, lo de la versión puede ser ya que openssl, creo que desde 0.9 cambiaron el "des_" por el "DES_" para que no colisione con libdes, pero no creo que ubuntu instale una versión taaan vieja   :D


Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: gecko on October 24, 2017, 01:37:36 PM
Si, hice monton de pruebas en Travis, así que lamento que hayas tenido que ver eso jaja  ::)

Ahora probé en una maquina local, y sigue explotando en el mismo lugar.

Comprobé que las dependencias estén instaladas (con el cambio que sugeriste respecto a agregar :i386 a SDL), y está todo ok:

$ sudo apt-get install libsdl1.2-dev:i386 libsdl-mixer1.2-dev:i386 zlib1g-dev:i386 libssl-dev:i386 openssl:i386
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
libsdl1.2-dev:i386 ya está en su versión más reciente (1.2.15+dfsg1-3).
libsdl-mixer1.2-dev:i386 ya está en su versión más reciente (1.2.12-11build1).
libssl-dev:i386 ya está en su versión más reciente (1.0.2g-1ubuntu4..
openssl:i386 ya está en su versión más reciente (1.0.2g-1ubuntu4..
zlib1g-dev:i386 ya está en su versión más reciente (1:1.2.8.dfsg-2ubuntu4.1).
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 3 no actualizados.


También el comando que me pasaste "muestra algo" en la salida, asi que supongo que eso está bien:
$ PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig/ pkg-config --cflags --libs libcrypto
-lcrypto


Pero al momento de ejecutar $ ./build-linux.sh release... pum, explota en el mismo lugar.

Alguna idea más? Es momento de dejar esto de la programación y dedicarme a la agricultura?  :o
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: daltomi on October 24, 2017, 02:49:41 PM
A ver, ¿y si forzamos los includes y los libs path?

Ejecuta lo siguiente.

CFLAGS="-m32 -I/usr/include/i386-linux-gnu" LDFLAGS=-L/usr/lib/i386-linux-gnu ./build-linux.sh release


Como mi ubuntu ya es de 32 bits no tengo problemas de resolución de paths pero si tuve que modificar el archivo build-linux.sh, en donde dice -lSDL-1.2 debe ser sólo -lSDL, esto es porque -lSDL es implícitamente 1.x y para usar SDL2 se usa explícitamente -lSDL2.

En cuanto a las versiones de las libs son iguales a las tuyas.
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: Futu-block on October 24, 2017, 03:00:13 PM
vale, pero compilar puedes, ¿no? yo lo digo porque me pasará a mi lo que a ti, que compila un juego pero tendré problemas para distribuirlo
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: SplinterGU on October 25, 2017, 07:37:13 PM
ii  libssl-dev:i386                                 1.0.2g-1ubuntu13                            i386         Secure Sockets Layer toolkit - development files
ii  libssl1.0.0:i386                                1.0.2g-1ubuntu13                            i386         Secure Sockets Layer toolkit - shared libraries



root@splinter-C500:~# ldd bennugd/bin/i386-linux-gnu/libbgdrtm.so
        linux-gate.so.1 =>  (0xf7792000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7538000)
        libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7533000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7514000)
        libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xf7327000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7228000)
        /lib/ld-linux.so.2 (0x5660d000)



root@splinter-C500:~# dpkg -L libssl1.0.0:i386|grep so
/lib/i386-linux-gnu/libcrypto.so.1.0.0
/lib/i386-linux-gnu/libssl.so.1.0.0
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: SplinterGU on October 25, 2017, 07:41:18 PM
perdon por la confusion, es la crypto contenida en libssl1.0.0:i386 tambien hay que instalar el libssl-dev:i386
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: gecko on October 25, 2017, 09:03:51 PM
Bueno, la buena noticia es que de alguna manera compiló. Así que por el momento la agriculturá tendrá que esperar  :P

Con respecto a lo que dijiste, Splinter: Comprobé y tengo ambas librerias instaladas (con la arquitectura :i386, todas), y una tercera openssl tambien, pero que creo que esa no tiene nada que ver. Muestro el resultado de algunos comandos:
$ sudo apt-get install libssl1.0.0:i386 libssl-dev:i386
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
libssl-dev:i386 ya está en su versión más reciente (1.0.2g-1ubuntu4.8).
libssl1.0.0:i386 ya está en su versión más reciente (1.0.2g-1ubuntu4.8).
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 4 no actualizados.

$ dpkg -L libssl1.0.0:i386|grep so
/lib/i386-linux-gnu/libcrypto.so.1.0.0
/lib/i386-linux-gnu/libssl.so.1.0.0
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libaep.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libchil.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libatalla.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libsureware.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libpadlock.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgmp.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libcswift.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libcapi.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/lib4758cca.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libnuron.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libubsec.so

$ dpkg -L libssl-dev:i386|grep so
/usr/include/openssl/dso.h
/usr/lib/i386-linux-gnu/libssl.so
/usr/lib/i386-linux-gnu/libcrypto.so



Con respecto a lo que dijiste, daltomi, una vez que ejecuté el comando que pasaste, tuve el mismo problema con SDL, hice el cambio, y ahi finalmente compiló y creó los binarios!! gracias!!, pero en el log habia una advertencia de que no iba a ser un binario portable (supongo que por haberle especificado las rutas). Pero despues haciendo ldd (como hizo splinter) a la libreria, me da las mismas mismas rutas.

$ ldd bin/i386-linux-gnu/libbgdrtm.so
linux-gate.so.1 =>  (0xf77fa000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf75ef000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf75ea000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf75ce000)
libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xf73e2000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf738d000)
/lib/ld-linux.so.2 (0x565d1000)


Lo raro es que no instalé de ninguna manera rara las librerias como para que no las encuentre. No tengo idea que pueda llegar a ser lo que hace que no funcione de la manera normal. Si tienen alguna sugerencia más, soy todo oidos.


EDIT: ya se puede ver el PRIMER BUILD EXITOSO en Travis: https://travis-ci.org/tehuel/bennugd/builds/292844565  ;D
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: Futu-block on October 25, 2017, 10:30:21 PM
muy bien, me alegro
Title: Re:Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh
Post by: SplinterGU on October 26, 2017, 04:24:50 AM
Quote from: gecko on October 25, 2017, 09:03:51 PM
Bueno, la buena noticia es que de alguna manera compiló. Así que por el momento la agriculturá tendrá que esperar  :P

Con respecto a lo que dijiste, Splinter: Comprobé y tengo ambas librerias instaladas (con la arquitectura :i386, todas), y una tercera openssl tambien, pero que creo que esa no tiene nada que ver. Muestro el resultado de algunos comandos:
$ sudo apt-get install libssl1.0.0:i386 libssl-dev:i386
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
libssl-dev:i386 ya está en su versión más reciente (1.0.2g-1ubuntu4.8).
libssl1.0.0:i386 ya está en su versión más reciente (1.0.2g-1ubuntu4.8).
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 4 no actualizados.

$ dpkg -L libssl1.0.0:i386|grep so
/lib/i386-linux-gnu/libcrypto.so.1.0.0
/lib/i386-linux-gnu/libssl.so.1.0.0
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libaep.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libchil.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libatalla.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libsureware.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libpadlock.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgmp.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libcswift.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libcapi.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/lib4758cca.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libnuron.so
/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libubsec.so

$ dpkg -L libssl-dev:i386|grep so
/usr/include/openssl/dso.h
/usr/lib/i386-linux-gnu/libssl.so
/usr/lib/i386-linux-gnu/libcrypto.so



Con respecto a lo que dijiste, daltomi, una vez que ejecuté el comando que pasaste, tuve el mismo problema con SDL, hice el cambio, y ahi finalmente compiló y creó los binarios!! gracias!!, pero en el log habia una advertencia de que no iba a ser un binario portable (supongo que por haberle especificado las rutas). Pero despues haciendo ldd (como hizo splinter) a la libreria, me da las mismas mismas rutas.

$ ldd bin/i386-linux-gnu/libbgdrtm.so
linux-gate.so.1 =>  (0xf77fa000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf75ef000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf75ea000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf75ce000)
libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xf73e2000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf738d000)
/lib/ld-linux.so.2 (0x565d1000)


Lo raro es que no instalé de ninguna manera rara las librerias como para que no las encuentre. No tengo idea que pueda llegar a ser lo que hace que no funcione de la manera normal. Si tienen alguna sugerencia más, soy todo oidos.


EDIT: ya se puede ver el PRIMER BUILD EXITOSO en Travis: https://travis-ci.org/tehuel/bennugd/builds/292844565  ;D

algo esta fallando, no deberia darte ese mensaje de que no es portable, eso pasa cuando no encuentra alguna .so...

te sugiero empezar de cero con la oficial nuevamente... lo que tenes que hacer es instalar las libs que te dije en mi ultimo mensaje...

libssl-1.0.0:i386 y libssl-dev:i386, la openssl no es necesario

y ejecuntes el ./build-linux.sh release