[caracas-pm] Obteniendo __errno_location al cargar módulo Perl XS en FreeBSD

Alejandro Imass ait at p2ee.org
Tue Aug 16 08:03:33 PDT 2011


Buenos días.

Estoy compilando una librería propietaria en FreeBSD que ofrece un API
en Perl mediante XS. El paquete viene con un ar archive para Linux 64
pero necesito compilar y correr este módulo en FreeBSD. El proceso de
make no se queja en lo absoluto sobre los object files en el ar, y
todo se compila sin error alguno.

La librería se compila perfecto pero cuando dynaloader va a cargar el
shared object me da el error:

/libexec/ld-elf.so.1: (undisclosed).so: Undefined symbol "__errno_location"

Me pregunto si esto es ld-el quejándose que no consigue el símbolo en
(undisclosed), o es (undisclosed) que no consigue el símbolo en una de
sus dependencias?

He investigado acerca de __errno_location pero algunos dicen que está
relacionado a pthreads, y otros que es de libm y que está definido en
errno.h pero este símbolo no lo encuentro en ningún .h ni en Linux ni
en FreeBSD

Como se puede ver, al librería se construye bien y satisface todas sus
dependencias, Mi pregunta es... el error de undefined symbol no
debería manifestarse durante la compilación en vez que en el linkeo
dinámico?


ldd blib/arch/auto/<undisclosed>.so blib/arch/auto/Gateway/Gateway.so:
libcurl.so.6 => /usr/local/lib/libcurl.so.6 (0x800c00000) libssl.so.6
=> /usr/lib/libssl.so.6 (0x800d54000) libstdc++.so.6 =>
/usr/lib/libstdc++.so.6 (0x800ea7000) libm.so.5 => /lib/libm.so.5
(0x8010b7000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x8011d7000)
libc.so.7 => /lib/libc.so.7 (0x800647000) libcrypto.so.6 =>
/lib/libcrypto.so.6 (0x8012e5000) libz.so.5 => /lib/libz.so.5
(0x801585000)

Gracias anticipadas por cualquier ayuda!

--
Alejandro Imass


More information about the caracas-pm mailing list