2012-02-12 9 views
5

Un proyecto en el que estoy trabajando utiliza un sistema de distribución no estándar, que internamente descarga y compila las bibliotecas de dependencias. Este depósito inicia, para cada biblioteca, el script configure que da como prefijo un directorio interno del sistema de compilación. Luego ejecuta make y make install, luego verifica el contenido buscando en el directorio de instalación el archivo lib/<mylib>.a. Este último paso falla.Directorio de Lib en la distribución de OpenSuse de 64 bits

Tratando de entender lo que está sucediendo, compilé un par de bibliotecas aleatorias por mi cuenta, incluida una de la que soy el autor. Noté que bajo mi distribución (openSUSE, 64 bit) la ruta de instalación no está poblada con /lib, sino con /lib64.

Está claro que esta es una configuración de la distribución, y estoy bastante seguro de que esta configuración se refiere a una configuración de autotools incluida con la distribución.

¿Hay alguna forma de cambiar este comportamiento o, como alternativa, leer esta información del sistema (para que pueda aplicar el parche a la muestra antes mencionada)?

Gracias por su ayuda

actualización: que aprendieron sobre la bandera --libdir en configure, así que creo que puedo resolver mi problema. Sin embargo, me gustaría saber si hay alguna forma de conocer este detalle consultando de alguna manera la distribución (por ejemplo, lea algún archivo de configuración).

+0

Esto no tiene nada que ver con autoconf en el sistema, ya que no está ejecutando autoconf. –

+0

@WilliamPursell: No, pero estoy ejecutando el script 'configure'. Supongo que el sistema de compilación basado en 'configure' puede leer alguna configuración del sistema operativo (por ejemplo, algún archivo en'/etc/') para determinar dónde se espera que el sistema operativo encuentre las bibliotecas. – Dacav

+0

Si el script de configuración está buscando en/etc /, es un error en el paquete. Nunca he visto el comportamiento que describes. Puede ser que esté generando scripts de configuración con una versión parcheada de autoconf. ¿El script de configuración contiene la línea "libdir = '$ {exec_prefix}/lib'"? –

Respuesta

5

La secuencia de comandos de configuración nunca debe intentar hacer suposiciones sobre la máquina o intentar instalar bibliotecas en ubicaciones distintas de $ {exec_prefix}/lib a menos que el usuario solicite explícitamente una ubicación diferente para $ libdir. Un mecanismo mediante el cual el usuario puede solicitar explícitamente una ubicación alternativa es mediante un archivo config.site. Si existe el archivo $ {prefix} /share/config.site, puede especificar un valor alternativo para $ libdir, haciendo que el usuario especifique explícita y sin saberlo una ubicación de instalación alternativa.

3

Esa es una buena respuesta de William Pursell. Solo quería agregar, ya que esta pregunta concierne específicamente a openSUSE, que openSUSE no instala un archivo llamado config.site. El archivo equivalente está realmente instalado en /usr/share/site a través de site-config rpm, y luego se activa a través de /etc/profile/site.{c,}sh que exporta la variable de entorno CONFIG_SITE para apuntar a este archivo. Esa variable es entonces honoured by autoconf, como ya habrás visto.

Cuestiones relacionadas