Como faço para incluir um caminho para bibliotecas em g ++


96

Estou tentando incluir o caminho para bibliotecas extras em meu makefile, mas não consigo descobrir como fazer com que o compilador use esse caminho. até agora eu tenho:

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

e eu quero incluir o caminho para

/data[...]/lib

porque testing.cpp inclui arquivos dessa biblioteca. Além disso, estou em uma máquina Linux.

EDIT: Não é um caminho para uma biblioteca. Apenas para arquivos que foram incluídos. Foi mal.


Respostas:


168

Para especificar um diretório para pesquisar bibliotecas (binárias), você apenas usa -L:

-L/data[...]/lib

Para especificar o nome real da biblioteca, você usa -l:

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

Para especificar um diretório para pesquisar arquivos de inclusão (diferente de bibliotecas!), Você usa -I:

-I/data[...]/lib

Então eu acho que você quer algo como

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

4
Basicamente, em algum lugar antes de ser necessário; O -Ideve vir antes dos nomes de arquivo .cpp, por exemplo.
Ernest Friedman-Hill

1
É possível fazer o compilador imaginar isso, como adicionar a biblioteca a uma variável do sistema?
Fred

5
@Fred, sim, g ++ entende um monte de variáveis ​​de ambiente que podem ser usadas para controlar o caminho de inclusão, o caminho da biblioteca, etc.
Ernest Friedman-Hill

1
qual é a diferença entre -L e -I (capital i, não inferior L)?
Youda008

1
@ Youda008 Capital ell: caminho de pesquisa para bibliotecas. Olho maiúsculo: caminho de pesquisa para incluir arquivos. Small ell: nome da biblioteca a ser vinculada.
Ernest Friedman-Hill

1

Em seu MakeFile ou CMakeLists.txt, você pode definir CMAKE_CXX_FLAGS como abaixo:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.