Arquivos de biblioteca geralmente são prefixados com lib ; Seu comando locate pode ter sido mais bem-sucedido se você fosse menos específico: locate "*log4cpp*" .
Com relação às bibliotecas compartilhadas (isto é, .so files - normalmente, mas não necessariamente, o caso; consulte "O que é uma pasta da biblioteca?" abaixo) whereis normalmente encontrará o caminho apropriado, mas não suporta globbing, então você teria que ter o nome correto, sem sufixo ( whereis liblog4cpp ). ldconfig -p é ainda melhor, porque você está obtendo as informações diretamente da boca do cavalo ( ldconfig configura o cache usado pelo vinculador, que gerencia as bibliotecas compartilhadas).
ldconfig -p | grep log4cpp
Note que, para construir na biblioteca, você também precisa do cabeçalho de inclusão relevante, que provavelmente não é instalado por padrão pela distro; aqueles vêm em pacotes -dev ou -devel separados.
O que é um diretório de inclusão?
Um diretório de inclusão contém arquivos de cabeçalho C e C ++ usados dessa maneira no código-fonte:
#include <foobar.h>
#include <foo/bar.h>
Eles são organizados em hierarquias, algumas das quais são estipuladas por padrões de linguagem (C / C ++). No entanto, o caminho para o topo da hierarquia é específico para o sistema e conhecido pelo compilador / pré-processador. Por exemplo, esses dois arquivos podem ser encontrados em /usr/include/foobar.h e /usr/include/foo/bar.h .
Os sistemas Linux geralmente possuem dois diretórios include de nível superior em reprodução, /usr/include e /usr/local/include (o último tem precedência).
Os arquivos de inclusão não são necessários para o software compilado, apenas para criá-los, e é por isso que instalar o libfoobar de um pacote de distribuição irá obter libfoobar.so mas não foobar.h . Isso está no pacote libfoobar-dev (as convenções de nomenclatura do nb variam um pouco nas distribuições).
O que é um diretório de biblioteca?
Um diretório de bibliotecas contém bibliotecas de dois formulários, dinâmico (também conhecido como compartilhado) e estático. A maioria deles é o primeiro. Eles correspondem aproximadamente para incluir diretórios, mas geralmente há mais deles ( /lib , /lib64 , /usr/lib , /usr/local/lib , etc .; alguns deles podem ser links simbólicos para outros).
Uma biblioteca compartilhada é aquela que é usada em tempo de execução; Se um executável vincula a uma biblioteca compartilhada, (partes de) ambos são carregados na memória conforme necessário para que o programa seja executado. Se algo já estiver usando a biblioteca, ela já estará na memória e não precisará ser carregada novamente; os dois aplicativos não interferirão entre si, pois a parte compartilhada é somente leitura para eles. Bibliotecas compartilhadas por convenção usam o sufixo .so .
Uma biblioteca estática é construída em um executável em tempo de compilação e não é necessário executar o executável posteriormente. Isso é menos comum porque a biblioteca não pode ser compartilhada com outros aplicativos, o que potencialmente desperdiça uma quantidade considerável de RAM. Bibliotecas estáticas por convenção usam o sufixo .a .
O que é um diretório binário?
Um diretório binário contém arquivos de programas executáveis, como ls ou firefox . Executáveis no mundo * nix não usam sufixos. Esses diretórios geralmente estão na variável $PATH , caso contrário você teria que digitar /usr/bin/ls o tempo todo. Qual executável será usado quando você digitar ls pode ser determinado com o comando whereis ou which .
Se .configure permitir que você especifique uma biblioteca ou um diretório de inclusão, você normalmente só precisa fazê-lo se estiver em um local não padrão. Experimente sem e se não estiver encontrado e use a opção --with-inc= .