Estou invocando um comando como:
g++ ... -o"myapp" -lX11 ...
E recebendo
/usr/bin/ld: cannot find -lX11
Instalei os seguintes pacotes para oferecer suporte ao multiarch:
ia32-libs, libc6-dev-i386 and g++-multilib
Mas sem sucesso. Não parece haver nenhum X11.so em / usr / lib32; na verdade, existem apenas 52 bibliotecas nesse diretório. Tenho a impressão de que você deve instalar manualmente as bibliotecas, mas não sei o que devo verificar a seguir.
Qualquer ajuda apreciada.
ldconfig -p | grep libX11\\.
?Respostas:
Você precisa dos arquivos de cabeçalho, fornecidos pelos
-dev
pacotes, e não dos próprios pacotes da biblioteca. Então, tente instalarlibx11-dev
. Isso deve corrigir esse erro de compilação específico, embora você possa receber erros semelhantes sobre outras bibliotecas (e depois instalar os-dev
pacotes).Embora esses pacotes forneçam arquivos de cabeçalho em vez de binários e, em geral, os arquivos de cabeçalho sejam responsáveis por todas as arquiteturas suportadas pelo uso de macros de pré-processador, os
-dev
pacotes no Ubuntu tendem a ser específicos da arquitetura, e é o casolibx11-dev
(como pode ser visto aqui expandindo um release e localizando os.deb
pacotes listadoslibx11-dev
nesse release). Como seu sistema Ubuntu é de 64 bits e você está compilando um programa de 32 bits que deve ser vinculado à versão de 32 bits da biblioteca, você provavelmente precisará instalar a versão de 32 bitslibx11-dev
. Se você estiver instalando comapt-get
ouaptitude
, poderá especificar isso indicandolibx11-dev:i386
como o pacote a instalar (uma vez que o multarch é suportado e está sendo usado).http://packages.ubuntu.com/ é um bom recurso para encontrar o nome do
-dev
pacote correspondente a um pacote de biblioteca. Nem sempre é o nome do pacote da biblioteca imediatamente seguido por-dev
; Às vezes, os números de versão presentes no nome do pacote da biblioteca, especialmente após a-
, estão ausentes no nome do-dev
pacote correspondente .fonte