Compilando para MAC

Started by OscarBraindeaD, April 01, 2009, 05:32:55 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

OscarBraindeaD

Quote from: SplinterGU on April 04, 2009, 12:18:17 PM
2) hace un ldd de la libz

Lo siento, no sé qué es un ldd...
La compilación la adjunto en un fichero.

Muchas gracias!

SplinterGU

ldd es una utilidad que te dice que dependencias de una libreria.
y me falto decirte que uses tambien nm, que es una utilidad que te dice que funciones se exportan en una libreria.

para descartar todo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

#17
con que version estas? no es COMMON_LIBS es COMMON_LDFLAGS


perdon, en core es COMMON_LDFLAGS, en modules es COMMON_LIBS
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

proba copiando los settings de linux y cambia solo el define de TARGET
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

OscarBraindeaD

He probado con las settings de linux, y el resultado es el mismo.  ???
Ahora probaré a hacer el ldd y el nm de la zlib y pongo por aquí los resultados.

SplinterGU

hiciste la siguiente secuencia de autotools?

aclocal
automake
autoconf

si tira algun error, repetir los pasos.

luego siempre hacer configure y make

No puede no funcionar, algo te falta, porque no estan los -lz.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

OscarBraindeaD

Hmmm... esto es cada vez más raro.
He ejecutado el nm sobre la libz.a, pongo el fichero con la salida.
Con la configuración de libux copiada, con el target MAC, da otro problema con el AM_PATH_SDL... en el otro fichero, subo la secuencia con lo errores de autoconf y configure que da...
Esto es de locos!!!!  :D

SplinterGU

te falta el archivo .m4 de la SDL (o no esta bien instalada)
y necesitas la libz dinamica, la .a es la estatica.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

OscarBraindeaD

Ups, perdón; el nm de la libz.1.2.3.dylib:

[code language="bennu"]
Mac:lib oscar$ nm libz.1.2.3.dylib

libz.1.2.3.dylib(single module):
         U ___error
0000d400 s __dist_code
000082ec t __dyld_func_lookup
0000d300 s __length_code
00000000 t __mh_dylib_header
000094d2 t __tr_align
00006303 t __tr_flush_block
00004e93 t __tr_init
0000984d t __tr_stored_block
00009792 t __tr_tally
00003aab T _adler32
000082fa T _adler32_combine
0000db20 s _base_dist
0000dc20 s _base_length
00009457 t _bi_flush
0000db00 s _bl_order
0000698e t _build_tree
000013ab t _check_header
         U _clearerr
00008461 T _compress
000083aa T _compress2
00008491 T _compressBound
0000770a t _compress_block
0000f060 s _configuration_table
00000c29 T _crc32
000084b9 T _crc32_combine
0000b2e0 s _crc_table
0000ef40 s _dbase.3300
00004f7b T _deflate
00008e8e T _deflateBound
00008ecf T _deflateCopy
00007c2d T _deflateEnd
00004a2c T _deflateInit2_
000049e4 T _deflateInit_
0000934f T _deflateParams
00008e16 T _deflatePrime
00004d03 T _deflateReset
00008cbf T _deflateSetDictionary
00008dee T _deflateSetHeader
00008e51 T _deflateTune
0000b050 s _deflate_copyright
00007ec1 t _deflate_fast
00005b22 t _deflate_slow
000091d9 t _deflate_stored
0000191a t _destroy
0000ef00 s _dext.3301
0000e640 s _distfix.3372
0000dd80 s _distfix.3416
000081e7 t _do_flush
0000dd20 s _extra_blbits
0000dba0 s _extra_dbits
0000dca0 s _extra_lbits
         U _fclose
         U _fdopen
         U _ferror
         U _fflush
00005f34 t _fill_window
00005abf t _flush_pending
         U _fopen
         U _fprintf
         U _fputc
         U _fread
         U _free
         U _fseek
         U _ftell
         U _fwrite$UNIX2003
00007d9e t _getLong
00007d15 t _get_byte
000084a8 T _get_crc_table
0000d2e0 s _gz_magic
000008e0 t _gz_open
00008c93 T _gzclearerr
00001876 T _gzclose
00008b6b T _gzdirect
00008731 T _gzdopen
00008b40 T _gzeof
00008b84 T _gzerror
00008932 T _gzflush
0000877f T _gzgetc
00008804 T _gzgets
000008cc T _gzopen
0000886a T _gzprintf
000088d1 T _gzputc
00008907 T _gzputs
00001514 T _gzread
000017de T _gzrewind
0000896d T _gzseek
000086a9 T _gzsetparams
00008b1d T _gztell
000087af T _gzungetc
00007de1 T _gzwrite
00001a6e T _inflate
0000a038 T _inflateBack
0000afee T _inflateBackEnd
00009f34 T _inflateBackInit_
00009b6c T _inflateCopy
000019df T _inflateEnd
00009b0e T _inflateGetHeader
0000115e T _inflateInit2_
00001a45 T _inflateInit_
000099bf T _inflatePrime
00001314 T _inflateReset
00009a1a T _inflateSetDictionary
00009d42 T _inflateSync
00009b3d T _inflateSyncPoint
0000b2b0 s _inflate_copyright
000043c1 t _inflate_fast
00003e5a t _inflate_table
0000efc0 s _lbase.3298
0000e6c0 s _lenfix.3371
0000de00 s _lenfix.3415
0000ef80 s _lext.3299
000060ee t _longest_match
000090fc t _longest_match_fast
         U _malloc
         U _memcpy
         U _memset
0000b085 s _my_version.3417
0000eec0 s _order.3393
0000e600 s _order.3467
00006e6f t _pqdownheap
00006f54 t _scan_tree
0000706f t _send_tree
         U _sprintf
0000f004 d _static_bl_desc
0000f018 d _static_d_desc
0000d600 s _static_dtree
0000f02c d _static_l_desc
0000d680 s _static_ltree
         U _strcat
         U _strcpy
         U _strerror$UNIX2003
         U _strlen
0000492c T _uncompress
00003d1d t _updatewindow
         U _vsnprintf
000099a5 T _zError
0000f0e0 s _z_errmsg
00001301 t _zcalloc
00001a36 t _zcfree
0000999b T _zlibCompileFlags
0000998a T _zlibVersion
0000f000 d dyld__mach_header
000082d8 t dyld_stub_binding_helper
[/code]

Respecto al .m4 de las SDL... sabrías decirme en qué path debería estar?

SplinterGU

la verdad que no se donde estan en mac
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

OscarBraindeaD

Yo las .dylib las tengo en usr/local/lib -creo que, por defecto lo instala ahí- pero ahí no hay ningún .m4
Los ficheros .m4 (sdl.m4 y acinclude.m4) están donde descomprimí las SDL, pero éstos no se copiaron a ningún lado cuando las instalé...
He probado copiándolos a mano a usr/local/lib pero tampoco los localiza ahí...

SplinterGU

no van donde estan las libs... hay un directorio especial para aclocal...

cuando hiciste make install deberia haber instalado... sino busca donde hay algun .m4 y copialo ahi.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#27
Quote from: SplinterGU on April 03, 2009, 11:18:19 PM
1 imagen vale mas que mil palabras


csplinter@splinter:~$ cd bennugd/
splinter@splinter:~/bennugd$ grep  COMMON_LIBS */*
modules/config.log:COMMON_LIBS=' -lc -lz -ldl'
modules/config.status:s,@COMMON_LIBS@,|#_!!_#| -lc -lz -ldl,g
modules/configure:COMMON_LIBS
[...]
modules/Makefile:COMMON_LIBS =  -lc -lz -ldl
[...]
tools/moddesc/Makefile:moddesc_LDADD = $(COMMON_LIBS)
tools/moddesc/Makefile.am:moddesc_LDADD = $(COMMON_LIBS)
tools/moddesc/Makefile.in:moddesc_LDADD = $(COMMON_LIBS)
splinter@splinter:~/bennugd$

Efectivamente, fíjate que la variable COMMON_LIBS la define, pero no la usa a la hora de compilar. Una línea de compilado de una librería en linux es, por ejemplo:
[code language="bash"]gcc -shared  .libs/libvideo_la-g_video.o .libs/libvideo_la-g_regions.o  -Wl,--rpath
-Wl,/home/joseba/cvs/bennugd_testing/modules/libgrbase/.libs -Wl,--rpath -Wl,/home/joseba/Publico//lib
/usr/lib/libSDL.so -L/home/joseba/cvs/bennugd_testing/modules/../core/bgdrtm/src/.libs -lbgdrtm
/home/joseba/cvs/bennugd_testing/modules/libgrbase/.libs/libgrbase.so -lX11  -Wl,-soname -Wl,libvideo.so
-o .libs/libvideo.so[/code]
Cuando debería ser:
[code language="bash"]gcc -shared  .libs/libvideo_la-g_video.o .libs/libvideo_la-g_regions.o  -Wl,--rpath
-Wl,/home/joseba/cvs/bennugd_testing/modules/libgrbase/.libs -Wl,--rpath -Wl,/home/joseba/Publico/lib
/usr/lib/libSDL.so -L/home/joseba/cvs/bennugd_testing/modules/../core/bgdrtm/src/.libs -lbgdrtm
/home/joseba/cvs/bennugd_testing/modules/libgrbase/.libs/libgrbase.so -lX11 -lc -lz -ldl
-Wl,-soname -Wl,libvideo.so -o .libs/libvideo.so[/code]
Fíjate que en la primera no salen las librerías. En los Makefile aparece lo de COMMON_LIBS porque efectivamente se están definiendo, pero luego no se usan a la hora de compilar.
Fíjate en el fichero libblit/Makefile.am, dice:
[code language="bash"libblit_la_SOURCES = libblit.c g_blit.c g_pixel.c
libblit_la_CFLAGS = $(COMMON_CFLAGS) $(SDL_CFLAGS) -I$(BGD_PATH)/include -I$(BGD_PATH)/bgdrtm/include -I. -I../libgrbase/
libblit_la_LDFLAGS = -s -module -no-undefined -avoid-version
libblit_la_LIBADD = $(LIBADD_DL) -lSDL -L$(BGD_PATH)/bgdrtm/src/.libs -lbgdrtm -L../libgrbase/.libs -lgrbase][/code]
Cuando debería decir:
[code language="bash"]libblit_la_SOURCES = libblit.c g_blit.c g_pixel.c
libblit_la_CFLAGS = $(COMMON_CFLAGS) $(SDL_CFLAGS) -I$(BGD_PATH)/include -I$(BGD_PATH)/bgdrtm/include -I. -I../libgrbase/
libblit_la_LDFLAGS = -s -module -no-undefined -avoid-version
libblit_la_LIBADD = $(COMMON_LIBS) $(LIBADD_DL) -lSDL -L$(BGD_PATH)/bgdrtm/src/.libs -lbgdrtm -L../libgrbase/.libs -lgrbase
[/code]Porque si no, a pesar de que la variable se está definiendo (y por eso sale al hacer "grep") no se está usando, y por eso en la primera línea de compilación no aparecen las librerías. Sin embargo, sí que se añaden las "$(COMMON_CFLAGS)" a las opciones de compilación.

[Edito] Ya lo siento, no me deja subrayar dentro de bloques de código; en el segundo bloque he añadido el "$(COMMON_LIBS)".

SplinterGU

asi esta bien, es que en realidad, los modules, no necesitan la libz... el unico que debe linkear contra la libz es la bgdrtm... o sea, que el problema esta en el core... creo que ya lo dije...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

OscarBraindeaD

Quote from: SplinterGU on April 04, 2009, 09:15:39 PM
asi esta bien, es que en realidad, los modules, no necesitan la libz... el unico que debe linkear contra la libz es la bgdrtm... o sea, que el problema esta en el core... creo que ya lo dije...

Pero, si el problema estuviese en el core, no habría podido crear el binario bgdc, bgdi y la libbgdrtm.la, no?
Y, sin embargo, las ha creado sin problema...