bash - una - ¿Cómo agregar rutas de inclusión y lib para configurar/hacer ciclo?
rutas persistentes en red hat (3)
Establezca LDFLAGS y CFLAGS cuando ejecute make:
$ LDFLAGS="-L/home/me/local/lib" CFLAGS="-I/home/me/local/include" make
Si no quiere hacer eso un millón de veces, expórtelos en su .bashrc (o su equivalente de shell). También configure LD_LIBRARY_PATH para incluir / home / me / local / lib:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/local/lib
Necesito un lugar para instalar bibliotecas en una caja de Linux a la que no tengo acceso. Estoy usando ~ / local [/ bin, / lib, / include], pero no sé cómo puedo decirle a ./configure que busque bibliotecas allí (particularmente, estoy tratando de compilar emacs, que necesita libgif , que no viene en mi distro).
Intenté agregar
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.
Esto tomó un tiempo para hacerlo 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
Note que CFLAGS no se usa con autogen.sh/configure, usarlo me dio el error: "configure: error: el compilador de C no puede crear archivos ejecutables". En el entorno de compilación, estaba usando una secuencia de comandos autogen.sh, si no tiene una secuencia de comandos autogen.sh ./autogen.sh con ./configure en el comando anterior. Ejecuté config.guess en el sistema de destino para obtener el parámetro --host.
Después de ejecutar con éxito autogen.sh/configure, compile 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 lograr que todos los directorios de inclusión estén configurados correctamente: es posible que desee incluir algunos que apuntan a su compilador cruzado y algunos que apuntan a su sistema de archivos raíz incluidos, y es probable que haya algunos conflictos.
Estoy seguro de que esta no es la respuesta perfecta. Y todavía estoy viendo algunos directorios de inclusión que apuntan a / y no / ccrootfs en los Makefiles. Me encantaría saber cómo corregir esto. Espero que esto ayude a alguien.
Quieres un archivo config.site. Tratar:
$ mkdir -p ~/local/share $ cat << EOF > ~/local/share/config.site CPPFLAGS=-I$HOME/local/include LDFLAGS=-L$HOME/local/lib ... EOF
Cada vez que invoque un script de configuración generado por autoconf con --prefix = $ HOME / local, se leerá el archivo config.site y se harán todas las asignaciones por usted. CPPFLAGS y LDFLAGS deberían ser todo lo que necesita, pero también puede hacer cualquier otra tarea que desee (de ahí la ... en la muestra de arriba). 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.