Intentando compilar BennuGD desde los fuentes, error en ./build-linux.sh

Started by gecko, October 19, 2017, 02:30:42 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

gecko

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:

  • sudo apt-get install -y zlib1g-dev libssl-dev libsdl1.2-dev libsdl-mixer1.2-dev
  • cd core/ && ./configure
  • cd modules/ && ./configure
  • ./build-linux.sh

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 y la configuracion con la que se ejecutó.

Alguna idea de como salvar o corregir esto? alguna ayuda? no tengo idea para donde arrancar a mirar...  :-\
Torres Baldi Studio
http://torresbaldi.com

l1nk3rn3l

creo se puede omitir la compilacion del modulo mod_crypt , preguntale al Maestro Splinter


SplinterGU

eso iba a decir...

la lib que falta no es la ssl... creo que es la crypto u openssl...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block

a mi la librería que me falló fué libpng12-0:i386:

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

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

gecko

Bueno, sigo sin poder hacerlo andar.

Tengo instalado openssl y 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.
Torres Baldi Studio
http://torresbaldi.com

Futu-block

¿te has descargado todas las librerias y binarios y los has instalado en el pc?
¿has hecho lo de los 64 bits?


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

gecko

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).
Torres Baldi Studio
http://torresbaldi.com

daltomi

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



gecko

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
Torres Baldi Studio
http://torresbaldi.com

daltomi

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.

Futu-block

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

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

perdon por la confusion, es la crypto contenida en libssl1.0.0:i386 tambien hay que instalar el libssl-dev:i386
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

gecko

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
Torres Baldi Studio
http://torresbaldi.com