Crear librería en GNU/Linux de 64 bits

Started by grisendo, November 21, 2009, 11:22:40 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

grisendo

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

grisendo

#1
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


SplinterGU

tenes que compilar todo en modo32
con las libs de 32
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

grisendo

Gracias, justo acabo de reiniciar en Windows XP porque ya me había dado por vencido :D

grisendo

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

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

Me faltaba el "bgdrtm.dll"!!!

Muchas gracias :D

blostec

Quote from: grisendo on November 22, 2009, 03:39:35 AM
Me faltaba el "bgdrtm.dll"!!!

Muchas gracias :D


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

grisendo

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!