Autor Tema: Crear librería en GNU/Linux de 64 bits  (Leído 4382 veces)

grisendo

  • Full Member
  • ***
  • Mensajes: 205
  • Karma: 22
  • Aprendiz de todo, maestro de nada
    • http://www.grisendo.com
Crear librería en GNU/Linux de 64 bits
« en: Noviembre 21, 2009, 11:22:40 pm »
Hola,

Antes he estado un rato buscando por el foro pero no encuentro la forma de crear un módulo utilizando Ubuntu de 64 bits y Code::Blocks. He copiado uno que había por el foro (uno que tenía con funciones de DNI y Fibonacci, http://forum.bennugd.org/index.php?topic=802.0) y creo que he enlazado bien todo en las opciones de proyecto y eso (carpeta include), pero el problema es que proporciona la librería libbgdrtm para windows (con extensión .dll).

Yo mi versión para GNU/Linux la tengo en /usr/lib32/bgd/lib/libbgdrtm.so, la enlazo desde el proyecto pero al compilar me dice


-------------- Build: Release in Prueba ---------------

Linking console executable: bin/Release/Prueba
/usr/lib32/bgd/lib/libbgdrtm.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
 

Por lo que me figuro que es porque la librería está compilada para 32 bits y mi compilador cree que está compilada para 64 bits.
¿Alguien me puede ayudar a resolver este pequeño gran problema para mí? :D
« última modificación: Noviembre 22, 2009, 12:36:44 am por grisendo »

grisendo

  • Full Member
  • ***
  • Mensajes: 205
  • Karma: 22
  • Aprendiz de todo, maestro de nada
    • http://www.grisendo.com
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #1 en: Noviembre 22, 2009, 12:36:24 am »
Vale, he avanzado un poco... He tenido que recompilar parte de Bennu para obtener la susodicha librería... Pero tengo otro problema:

Si pongo el proyecto como aplicación de consola y le pongo un main funciona bien (llamo a la función del DNI y calcula bien la letra correspondiente, pintándola por pantalla).

Pero si pongo como biblioteca dinámica me tira este error:

-------------- Build: Release in Prueba ---------------

Compiling: main.c
Linking dynamic library: bin/Release/Prueba.so
/usr/bin/ld: /usr/local/lib/libdes.a(ecb_enc.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libdes.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
 
« última modificación: Noviembre 22, 2009, 12:47:12 am por grisendo »

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #2 en: Noviembre 22, 2009, 01:03:50 am »
tenes que compilar todo en modo32
con las libs de 32
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

grisendo

  • Full Member
  • ***
  • Mensajes: 205
  • Karma: 22
  • Aprendiz de todo, maestro de nada
    • http://www.grisendo.com
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #3 en: Noviembre 22, 2009, 01:13:26 am »
Gracias, justo acabo de reiniciar en Windows XP porque ya me había dado por vencido :D

grisendo

  • Full Member
  • ***
  • Mensajes: 205
  • Karma: 22
  • Aprendiz de todo, maestro de nada
    • http://www.grisendo.com
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #4 en: Noviembre 22, 2009, 02:48:20 am »
La c... de su v...!!!

Siento ser tan cansino pero me tira (ahora en Windows XP 32 bits) errores al linkar de que no se pueden encontrar _string_get, _string_concat y unos cuantos más... siendo que veo que están en xstring.h!!! Para mí que me falta un .lib o .a o lo que sea y no lo encuentro :(

Windgate

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #5 en: Noviembre 22, 2009, 02:59:16 am »
Ese error de las string lo tengo oído de que le ha pasado a alguno más haciendo esas cosas macabras... Si puedes subir el paquete tal como lo tienes a ver si alguien (Yo no :() te puede ayudar...

También puedes buscar parte del error en el buscador del foro, desde Inicio, porque estoy casi seguro de haber leído estos mismos errores de string con algo similar que le pasó a josebita o DCelso.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

grisendo

  • Full Member
  • ***
  • Mensajes: 205
  • Karma: 22
  • Aprendiz de todo, maestro de nada
    • http://www.grisendo.com
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #6 en: Noviembre 22, 2009, 03:39:35 am »
Me faltaba el "bgdrtm.dll"!!!

Muchas gracias :D

blostec

  • Hero Member
  • *****
  • Mensajes: 747
  • Karma: 20
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #7 en: Noviembre 22, 2009, 04:15:43 pm »
Me faltaba el "bgdrtm.dll"!!!

Muchas gracias :D


¿Que versión usas? En las ultimas RC se cambio el nombre por "libbgdrtm.dll"

grisendo

  • Full Member
  • ***
  • Mensajes: 205
  • Karma: 22
  • Aprendiz de todo, maestro de nada
    • http://www.grisendo.com
Re: Crear librería en GNU/Linux de 64 bits
« Respuesta #8 en: Noviembre 22, 2009, 04:44:30 pm »
La versión de Bennu que uso es la 1.0.0 del 6 de julio de 2009. Busqué un problema similar de linking en el foro y vi que le respondían que tenía que usar la "bgdruntime", así que busqué lo más similar que tenía "bgdrtm.dll" y funcionó. También tengo la que dices, pero como la otro funcionaba pues no probé. Luego probaré con "libbgdrtm.dll" a ver si funciona igual. Muchas gracias!