¿Cómo incluyo una ruta a las bibliotecas en g ++?


96

Estoy tratando de incluir la ruta a bibliotecas adicionales en mi archivo MAKE, pero no puedo averiguar cómo hacer que el compilador use esa ruta. hasta ahora tengo:

g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test

y quiero incluir el camino a

/data[...]/lib

porque testing.cpp incluye archivos de esa biblioteca. Además, estoy en una máquina Linux.

EDITAR: No es un camino a una biblioteca. Solo para los archivos incluidos. Culpa mía.


Respuestas:


168

Para especificar un directorio para buscar bibliotecas (binarias), simplemente use -L:

-L/data[...]/lib

Para especificar el nombre real de la biblioteca, usa -l:

-lfoo  # (links libfoo.a or libfoo.so)

Para especificar un directorio para buscar archivos de inclusión (¡diferente de las bibliotecas!), Usa -I:

-I/data[...]/lib

Entonces creo que lo que quieres es algo como

g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test

4
Básicamente en algún lugar antes de que sea necesario; el -Idebe venir antes de los nombres de archivo .cpp, por ejemplo.
Ernest Friedman-Hill

1
¿Es posible hacer que el compilador se fije eso, como agregar la biblioteca a una variable del sistema?
Fred

5
@Fred, sí, g ++ entiende un montón de variables de entorno que se pueden usar para controlar la ruta de inclusión, la ruta de la biblioteca, etc.
Ernest Friedman-Hill

1
¿Cuál es la diferencia entre -L y -I (i mayúscula, no L menor)?
Youda008

1
@ Youda008 Capital ell: ruta de búsqueda de bibliotecas. Capital eye: ruta de búsqueda para incluir archivos. Ell pequeño: nombre de la biblioteca a vincular.
Ernest Friedman-Hill

1

En su MakeFile o CMakeLists.txt puede configurar CMAKE_CXX_FLAGS como se muestra a continuación:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.