Get Firefox

Firefox 4.0

stopsoftwarepatents.eu petition banner Manifiesto por la liberación de la cultura 
No a la traza privada
Últimos cambios
Últimos Cambios
Vote for Public Maps - Reject INSPIRE! Geocaching
Mi estado actual en Jabber/XMPP: - jabberES - jabber.org

Inclusión de '/usr/local/lib' en el path de búsqueda de librerías compartidas, bajo "binutils" y Solaris 2.5.1

Última Actualización: 30 de Enero de 2003 - Jueves

Bajo Solaris 2.5.1 y "binutils", no se busca en el directorio "/usr/local/lib" a la busca de librerías dinámicas a menos que así se indique explícitamente a la hora de enlazar el código. Si se tiene un poco de experiencia, ello no es problema, ya que se especifican un par de opciones más en la línea de comandos de GCC, y problema solucionado.

Las versiones recientes (3.2) de GCC, no obstante, tienen un pequeño problema, y es que el "bootstrap" de arranque de cada programa se ha relegado a una librería dinámica, "libgcc_s.so", instalada por defecto en "/usr/local/lib". Esta librería, usada en todos los programas compilados con el nuevo GCC, no se puede encontrar por defecto, al no buscarse ese directorio de forma automática.

Cansado de tener que modificar infinidad de "Makefiles" para incluir ese directorio, me decidí a parchear la utilidad "ld" de "binutils" para hacerlo automáticamente y olvidarme del asunto de una vez por todas.

El siguiente parche se aplica a "binutils" versión 2.12.1:

RCS file: /opt/src/cvsroot/binutils/ld/emultempl/elf32.em,v
retrieving revision 1.1.1.6
retrieving revision 1.1.1.6.2.1
diff -u -u -r1.1.1.6 -r1.1.1.6.2.1
--- ld/emultempl/elf32.em       2002/05/17 12:35:59     1.1.1.6
+++ ld/emultempl/elf32.em       2002/09/02 19:57:02     1.1.1.6.2.1
@@ -844,6 +844,21 @@
   rpath = command_line.rpath;
   if (rpath == NULL)
     rpath = (const char *) getenv ("LD_RUN_PATH");
+
+/*
+** jcea@argo.es - 02/Sep/02
+*/
+  if(rpath==NULL)
+    rpath="/usr/local/lib";
+  else {
+    char *buf;
+
+    buf=xmalloc(strlen(rpath)+strlen(":/usr/local/lib")+1); /* El '\0' del final */
+    sprintf(buf,"%s:/usr/local/lib",rpath);
+    rpath=buf;
+  }
+
+
   if (! (bfd_elf${ELFSIZE}_size_dynamic_sections
          (output_bfd, command_line.soname, rpath,
          command_line.filter_shlib,



Firefox 4.0 Python Zope ©2002-2003 jcea@jcea.es