Ich rufe einen Befehl auf wie:
g++ ... -o"myapp" -lX11 ...
Und bekommen
/usr/bin/ld: cannot find -lX11
Ich habe die folgenden Pakete installiert, um Multiarch zu unterstützen:
ia32-libs, libc6-dev-i386 and g++-multilib
Aber ohne Erfolg. Es scheint keine X11.so in / usr / lib32 zu geben, tatsächlich befinden sich nur 52 Bibliotheken in diesem Verzeichnis. Ich habe den Eindruck, dass Sie Bibliotheken manuell installieren sollten, aber ich weiß nicht, was ich als nächstes überprüfen soll.
Jede Hilfe geschätzt.
ldconfig -p | grep libX11\\.
?Antworten:
Sie benötigen die Header-Dateien, die von
-dev
Paketen bereitgestellt werden, und nicht in den Bibliothekspaketen selbst. Versuchen Sie es alsolibx11-dev
. Das sollte diesen speziellen Build-Fehler beheben, obwohl Sie möglicherweise ähnliche Fehler bei anderen Bibliotheken erhalten (und dann deren-dev
Pakete installieren können ).Obwohl diese Pakete eher Header-Dateien als Binärdateien bereitstellen und Header-Dateien im Allgemeinen alle unterstützten Architekturen durch die Verwendung von Präprozessor-Makros berücksichtigen, sind
-dev
Pakete in Ubuntu in der Regel architekturspezifisch, und dies istlibx11-dev
(wie zu sehen ist) der Fall hier durch Erweitern einer Version und Suchen der in dieser Version.deb
aufgeführten Paketelibx11-dev
). Da Ihr Ubuntu-System 64-Bit ist und Sie ein 32-Bit-Programm kompilieren, das mit der 32-Bit-Version der Bibliothek verknüpft werden muss, müssen Sie wahrscheinlich die 32-Bit-Version von installierenlibx11-dev
. Wenn Sie mitapt-get
oder installierenaptitude
, können Sie dies angeben, indem Sielibx11-dev:i386
als zu installierendes Paket angeben (seit Multarch wird unterstützt und verwendet).http://packages.ubuntu.com/ ist eine gute Quelle, um den Namen des
-dev
Pakets zu finden, das einem Bibliothekspaket entspricht. Es ist nicht immer der Name des Bibliothekspakets, unmittelbar gefolgt von-dev
; Manchmal fehlen im Namen des Bibliothekspakets Versionsnummern, insbesondere nach a-
, im Namen des entsprechenden Pakets.-dev
quelle