Isso geralmente indica que você não instalou alguma dependência do programa que está tentando compilar. Dependendo do arquivo de cabeçalho em questão e do programa que você está tentando compilar, você tem algumas opções:
O software alvo existe nos repositórios do Ubuntu
Às vezes você quer compilar a partir do código-fonte um pacote já fornecido pelo Ubuntu (para obter uma versão diferente, talvez, ou para corrigi-lo). Se o software não mudou muito, você pode usar apt
para obter as dependências:
sudo apt-get build-dep <package-name>
Isso deve instalar todos os pacotes necessários para compilar o pacote Ubuntu desse software (que pode ter menos ou mais pacotes do que o pacote de origem realmente precisa).
Se você precisar fazer apenas algumas pequenas alterações na fonte ou aplicar um patch, poderá até mesmo economizar um pouco de esforço, permitindo que apt
e dpkg
façam o trabalho pesado:
sudo apt-get build-dep <package-name>
apt-get source <package-name>
Isso fará o download dos arquivos de origem do pacote, incluindo tudo o que for necessário para criar um pacote dele. Os arquivos estarão em um diretório chamado <package-name>-<some-version>
. Insira, faça todas as alterações desejadas e faça:
sudo dpkg-buildpackage -b -us -uc
Isso cria pacotes binários não assinados no diretório pai ( cd ..
). Você pode usar dpkg
para instalar esses pacotes:
sudo dpkg -i <package-name>_<some-version>_<architecture>.deb
Exemplos:
O software alvo não está presente nos repositórios do Ubuntu
Você ainda pode tentar a sua sorte com o arquivo de cabeçalho específico faltando. Use o índice Ubuntu Packages (a opção para pesquisar o conteúdo dos pacotes) ou apt-file
para procurar o arquivo. Às vezes, vários pacotes podem fornecer arquivos com nomes semelhantes e, nesse caso, preferir:
- Arquivos em
/usr/include
. - Pacotes da sua arquitetura (use
uname -m
para saber qual é a sua arquitetura). - Qualquer versão específica da qual o seu software dependa (como o Qt4 em vez do Qt5) - verifique os arquivos
README
eINSTALL
na origem (se houver). - Pacotes cujos nomes terminam em
-dev
, que normalmente incluem cabeçalhos necessários para compilação.