2011-07-18 15 views
11

He instalado gcc 4.6 usando macports. El prefijo es /opt/local, y conseguir la esperada ruta de inclusión:gcc en Mac OS X: cómo vincular las bibliotecas instaladas con MacPorts?

#include "..." search starts here: 
#include <...> search starts here: 
/opt/local/include/gcc46/c++/ 
/opt/local/include/gcc46/c++//x86_64-apple-darwin10 
/opt/local/include/gcc46/c++//backward 
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include 
/opt/local/include 
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include-fixed 
/usr/include 
/System/Library/Frameworks 
/Library/Frameworks End of search list. 

Sin embargo, /opt/local/lib no parece estar en la ruta de búsqueda de biblioteca, así que tengo que especificar con -L/opt/local/lib cuando se utiliza g ++ en la línea de comandos:

Library search paths: 
    /opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1 
    /opt/local/lib/gcc46 
    /usr/lib 
    /usr/local/lib 
Framework search paths: 
    /Library/Frameworks/ 
    /System/Library/Frameworks/ 

Esto es un problema para otras bibliotecas instaladas con macports. ¿Hay alguna manera fácil de agregar /opt/local/lib a la ruta de búsqueda de la biblioteca? He intentado configurar DYLD_LIBRARY_PATH en vano. Estoy usando Mac OS X 10.6.8.

+0

'DYLD_LIBRARY_PATH' es para carga dinámica en tiempo de ejecución, no tiempo de compilación. – Dani

Respuesta

2

Depende si quiere vincular su ejecutable dinámico o estático con una biblioteca. En OS X se agrega las bibliotecas como archivos fuente/objeto como éste:

Dynamic: g++ -Wall -o myexecutable myfile.cpp /path/to/library.dylib 
Static: g++ -Wall -o myexecutable myfile.cpp /path/to/library.a 

La mejor manera es utilizar un sistema de construcción, por ejemplo CMake (que se puede instalar desde macports). Y hace que sea muy fácil encontrar bibliotecas, crear bibliotecas de forma cruzada.

+1

Mi pregunta es más acerca de cómo configurar '/ opt/local/lib' en la ruta de búsqueda de la biblioteca de gcc. Gcc está construido en/opt/local, así que espero que esté en la ruta de búsqueda pero no lo es. – juanchopanza

7

en su ~/.profile añadir la siguiente línea:

export LDFLAGS="-L/opt/local/lib" 

source ~/.profile y ejecutar en el terminal para volver a cargar el perfil.

De esta forma, el conmutador -L se detectará desde gcc/g ++ y se usará automáticamente.

+0

¿Cómo estás construyendo? Si solo uso la línea de comando g ++, esta variable de entorno no tiene ningún efecto. – juanchopanza

+2

se debe usar la variable LIBRARY_PATH, sin "-L" – hbogert