¿Cómo agregar rutas de inclusión y lib para configurar / hacer ciclo?


Necesito un lugar para instalar bibliotecas en una caja linux a la que no tengo acceso su. Estoy usando ~ / local [/bin, / lib, / include], pero no se como puedo saberlo ./ configure para buscar bibliotecas allí (particularmente, estoy tratando de compilar emacs, que necesita libgif, que no viene en mi distro).

He intentado añadir

export PATH=$PATH:~/local/bin
export LD_LIBRARY_PATH=~/local/lib
export C_INCLUDE_PATH=~/local/include
export CPLUS_INCLUDE_PATH=~/local/include

A .bashrc pero no parece funcionar.

Author: Mateusz Piotrowski, 2011-09-27

3 answers

Quieres una configuración.archivo del sitio. Try:

$ mkdir -p ~/local/share
$ cat << EOF > ~/local/share/config.site
CPPFLAGS=-I$HOME/local/include
LDFLAGS=-L$HOME/local/lib
...
EOF

Siempre que invoque un script de configuración generado por autoconf con pref prefix=HOME HOME/local, la configuración.el sitio será leído y todas las asignaciones serán hechas para usted. CPPFLAGS y LDFLAGS deberían ser todo lo que necesita, pero también puede hacer cualquier otra tarea que desee (de ahí el ... en la muestra anterior). Tenga en cuenta que los indicadores-I pertenecen a CPPFLAGS y no a CFLAGS, ya que-I está destinado al preprocesador y no al compilador.

 78
Author: William Pursell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-01 08:33:39

Establece LDFLAGS y CFLAGS cuando ejecutas make:

$ LDFLAGS="-L/home/me/local/lib" CFLAGS="-I/home/me/local/include" make

Si usted no quiere hacer que un millón de veces, exportar estos en su .bashrc (o su equivalente shell). También establezca LD_LIBRARY_PATH para incluir /home / me / local/lib:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/local/lib
 25
Author: long404,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-19 02:58:14

Esto tomó un tiempo para estar bien. Tuve este problema al compilar de forma cruzada en Ubuntu para un objetivo ARM. Lo resolví con:

PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf

Aviso CFLAGS no se utiliza con autogen.sh/configure, usándolo me dio el error: "configure: error: C compiler cannot create executables". En el entorno de construcción estaba usando un autogen.sh guión fue proporcionado, si usted no tiene un autogen.sh sustituto de script ./autogen.sh con ./ configure en el comando anterior. Corrí config.supongo que en el sistema de destino a obtenga el parámetro host host.

Después de ejecutar con éxito autogen.sh/configure, compilar con:

PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make

Los CFLAGS que elegí usar fueron: "-march=armv5te-fno-tree-vectorize-mthumb-interwork-mcpu=arm926ej-s". Tomará un tiempo configurar correctamente todos los directorios include: es posible que desee que algunos includes apunten a su compilador cruzado y otros a su sistema de archivos raíz includes, y es probable que haya algunos conflictos.

Estoy seguro de que esto no es el respuesta perfecta. Y todavía veo algunos directorios que apuntan a /y no a / ccrootfs en los Makefiles. Me encantaría saber cómo corregir esto. Espero que esto ayude a alguien.

 8
Author: Samuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-24 20:06:02