Wywołuję polecenie takie jak:
g++ ... -o"myapp" -lX11 ...
I coraz
/usr/bin/ld: cannot find -lX11
Zainstalowałem następujące pakiety do obsługi multiarch:
ia32-libs, libc6-dev-i386 and g++-multilib
Ale bez skutku. Wydaje się, że nie ma X11.so w / usr / lib32, w rzeczywistości w tym katalogu są tylko 52 biblioteki. Mam wrażenie, że powinieneś ręcznie zainstalować biblioteki, ale nie mam pewności, co powinienem sprawdzić później.
Każda pomoc doceniona.
ldconfig -p | grep libX11\\.
?Odpowiedzi:
Potrzebujesz plików nagłówkowych, które są dostarczane przez
-dev
pakiety, a nie same pakiety bibliotek. Spróbuj zainstalowaćlibx11-dev
. To powinno naprawić ten konkretny błąd kompilacji, chociaż możesz otrzymać podobne błędy dotyczące innych bibliotek (a następnie możesz zainstalować ich-dev
pakiety).Mimo że pakiety te zawierają pliki nagłówkowe, a nie pliki binarne, a ogólnie pliki nagłówkowe odpowiadają wszystkim obsługiwanym architekturom za pomocą makr preprocesora, niemniej jednak
-dev
pakiety w Ubuntu są zazwyczaj specyficzne dla architektury i tak jest w przypadkulibx11-dev
(jak widać tutaj , rozszerzając wydanie i znajdując.deb
pakiety wymienionelibx11-dev
w tym wydaniu). Ponieważ twój system Ubuntu jest 64-bitowy i kompilujesz program 32-bitowy, który musi łączyć się z 32-bitową wersją biblioteki, prawdopodobnie będziesz musiał zainstalować 32-bitową wersjęlibx11-dev
. Jeśli instalujesz za pomocąapt-get
lubaptitude
, możesz to określić, wskazująclibx11-dev:i386
jako pakiet do zainstalowania (od multarch jest obsługiwany i używany).http://packages.ubuntu.com/ jest dobrym źródłem do znalezienia nazwy
-dev
pakietu odpowiadającego pakietowi biblioteki. Nie zawsze po nazwie pakietu biblioteki następuje bezpośrednio-dev
; czasami numery wersji obecne w nazwie pakietu biblioteki, szczególnie po a-
, są nieobecne w nazwie odpowiedniego-dev
pakietu.źródło