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í (en particular, estoy tratando de compilar emacs, que necesita libgif , que no viene en mi distribución).
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.
export C_INCLUDE_PATH=~/local/include:$C_INCLUDE_PATH
, su compilador buscará primero en~/local/include
$ C_INCLUDE_PATH y en $ C_INCLUDE_PATH solo si no encontró la inclusión en el primer directorio.Respuestas:
Quieres un archivo config.site. Tratar:
Siempre que invoque un script de configuración generado por autoconf con --prefix = $ HOME / local, se leerá el 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 realizar cualquier otra asignación que desee (de ahí el ... en el ejemplo 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.
fuente
Configure 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 trilló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
fuente
/home/tneme/Descargas/emacs-23.3': configure: error: C compiler cannot create executables See
config.log 'para más detalles tEsto tomó un tiempo para hacerlo bien. Tuve este problema al realizar una compilación 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
Observe que CFLAGS no se usa con autogen.sh/configure, al usarlo me dio el error: "configure: error: el compilador C no puede crear ejecutables". En el entorno de compilación, estaba usando un script autogen.sh, si no tiene un script autogen.sh, sustituya ./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 configurar correctamente todos los directorios de inclusión: es posible que desee que algunos apunten a su compilador cruzado y otros que apunten a su sistema de archivos raíz, y es probable que haya algunos conflictos.
Estoy seguro de que esta no es la respuesta perfecta. Y todavía veo que algunos incluyen directorios que apuntan a / y no / ccrootfs en los Makefiles. Me encantaría saber cómo corregir esto. Espero que esto ayude a alguien.
fuente