Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

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,



Python Zope ©2002-2003 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS