Estoy invocando un comando como:
g++ ... -o"myapp" -lX11 ...
Y conseguir
/usr/bin/ld: cannot find -lX11
He instalado los siguientes paquetes para admitir multiarch:
ia32-libs, libc6-dev-i386 and g++-multilib
Pero fue en vano. No parece haber ningún X11.so en / usr / lib32, en realidad solo hay 52 bibliotecas en ese directorio. Tengo la impresión de que debería instalar manualmente las bibliotecas, pero no sé qué debo verificar a continuación.
Cualquier ayuda apreciada.
ldconfig -p | grep libX11\\.
?Respuestas:
Necesita los archivos de encabezado, que son proporcionados por los
-dev
paquetes, y no en los paquetes de la biblioteca en sí. Entonces, intente instalarlibx11-dev
. Eso debería solucionar este error de compilación en particular, aunque puede obtener errores similares sobre otras bibliotecas (y luego puede instalar sus-dev
paquetes).Aunque estos paquetes proporcionan archivos de encabezado en lugar de archivos binarios, y en general los archivos de encabezado representan todas las arquitecturas compatibles mediante el uso de macros de preprocesador, sin embargo, los
-dev
paquetes en Ubuntu tienden a ser específicos de la arquitectura, y este es el caso paralibx11-dev
(como se puede ver aquí expandiendo un lanzamiento y encontrando los.deb
paquetes listados paralibx11-dev
ese lanzamiento). Dado que su sistema Ubuntu es de 64 bits y está compilando un programa de 32 bits que debe vincularse con la versión de 32 bits de la biblioteca, probablemente necesitará instalar la versión de 32 bitslibx11-dev
. Si está instalando conapt-get
oaptitude
, puede especificarlo indicandolibx11-dev:i386
como el paquete para instalar (desde multarch es compatible y se está utilizando).http://packages.ubuntu.com/ es un buen recurso para encontrar el nombre del
-dev
paquete correspondiente a un paquete de biblioteca. No siempre es el nombre del paquete de la biblioteca seguido inmediatamente por-dev
; a veces los números de versión presentes en el nombre del paquete de la biblioteca, especialmente después de a-
, están ausentes en el nombre del-dev
paquete correspondiente .fuente