llvm und clang installation auf ubuntu

16

Also versuche ich, Halide auf meinem Ubuntu 12.04 (64bit) zu installieren . Ich brauche llvm-3.2 und clang, um installiert zu werden.

Das Ausführen sudo apt-get install llvm-3.2endet mit "Paket nicht gefunden".

Versucht sudo apt-get install llvmoder sudo apt-get install clanginstalliert 2.9 Versionen. Google hat mir dabei geholfen

sudo add-apt-repository ppa:kxstudio-team/builds
sudo apt-get update

Jetzt sudo apt-get install llvm-3.2 clang-3.2funktioniert. Aber wenn ich make im Halide-Ordner starte, klingelt es immer noch: Befehl nicht gefunden.

Andrei Ivanov
quelle
2
Ich gehe davon aus, dass "clag: Befehl nicht gefunden" "clang: Befehl nicht gefunden" lauten sollte.
andyg0808
ja, tut mir leid
Verwenden Sie ein Ubuntu mit einer GUI oder nur mit einer Befehlszeile?
andyg0808
Benötigen Sie auch Clang 3.2 oder nur Clang 3+?
andyg0808
Ich habe die Desktop-Version heruntergeladen. Ich brauche eigentlich llvm 3.2, es gibt kein wort über die version von clang.

Antworten:

9

Ok, so Halide auf Ubuntu 13.04 ich erfolgreich durch die Installation zusammengestellt llvm, clangund build-essential. Ich vermute nur, dass die von Ihnen installierte LLVM oder das Klirren der PPA möglicherweise nicht richtig funktioniert hat. Es scheint tatsächlich möglich zu sein, LLVM 3.2 von Ubuntu für 12.04 über das sogenannte "vorgeschlagene" Archiv zu beziehen. Sie können versuchen, die vorhandene LLVM zu löschen und sie von "vorgeschlagen" zu installieren. Wie das geht, erkläre ich weiter unten. Da du erwähnt hast, dass du neu in Ubuntu bist (in der ursprünglichen Version der Frage), erkläre ich zuerst, was jeder Befehl, den du bereits benutzt hast, so gut ich kann.

So sudo apt-get install llvm-3.2versucht das Paket mit dem Namen zu installieren llvm-3.2aus den aktuellen Repositories aktiviert auf Ihrem System. In Ihrem Fall konnte es nicht gefunden werden, daher ist der Befehl fehlgeschlagen. sudo apt-get install llvmhat das llvmPaket installiert , bei dem es sich wahrscheinlich um ein spezielles Paket handelt, das nur die aktuellste LLVM verwendet, die in Ihren Standard-Repositorys verfügbar ist. In Ihrem Fall war das 2.9. Gleiches gilt für sudo apt-get install clang. Fügt Ihrem System sudo add-apt-repository ppa:kxstudio-team/builds ein sogenanntes persönliches Paketarchiv oder PPA hinzu. Auf diese Weise können Sie mehr Software aus einem anderen Repository oder einer anderen Softwarequelle beziehen. Weitere Informationen finden Sie unter https://help.launchpad.net/Packaging/PPA . Schließlich,sudo apt-get updateWeist Ubuntu an, Informationen darüber zu erhalten, welche Pakete in den derzeit verfügbaren Repositorys verfügbar sind. Weitere Informationen zur Paketverwaltung in Debian finden Sie unter http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html (die meisten davon sollten auch für Ubuntu gelten). da Ubuntu auf Debian basiert).

Also, die Schritte, um die Pakete zu entfernen, die Sie haben, und die verfügbaren Versionen von präzise vorgeschlagen:

  1. Verwenden Sie sudo apt-get purge llvm-3.2 clang-3.2diese Option, um LLVM vollständig zu entfernen und von Ihrem System zu entfernen.
  2. (Optional) Verwenden Sie diese Option sudo add-apt-repository --remove ppa:kxstudio-team/builds, um die PPA von Ihrem System zu entfernen.
  3. Befolgen Sie die Anweisungen unter https://wiki.ubuntu.com/Testing/EnableProposed , um das vorgeschlagene Archiv (ganz oben auf der Seite) zu aktivieren, und folgen Sie den Anweisungen für "Selektives Upgrade von -proposed". Der erste Teil aktiviert die aktuelle Ubuntu-Version des llvm-3.2Pakets und der zweite Teil verhindert, dass das System versucht, ein Upgrade auf die vorgeschlagenen Versionen durchzuführen.
  4. Verwenden Sie sudo apt-get updatediese Option , um Informationen darüber abzurufen, welche Pakete und Versionen jetzt verfügbar sind.
  5. Verwenden Sie sudo apt-get install llvm-3.2/precise-proposed, um LLVM 3.2 zu installieren, und sudo apt-get install clang/precise-proposed, um Clang 3.0 zu installieren (ich denke, das ist die Version, die Sie bekommen sollten).
  6. NEUER SCHRITT: Lassen Sie sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configdas System so behandeln llvm-config-3.2(wie es llvm-configmitgeliefert wurde llvm-3.2) llvm-config. Genauer gesagt , erzeugt dies einen symbolischen Link (oder Symlink) zu llvm-config-3.2 an einer anderen Stelle, an der Ubuntu nach Programmen sucht (weitere Informationen: ln , FHS , PATH ). Wenn Sie also "llvm-config" ausführen, findet Ubuntu den Symlink und führt das Programm aus, auf das es zeigt ( llvm-config-3.2).
  7. Überprüfen Sie, ob jetzt alles korrekt kompiliert wird.

Hoffentlich klappt das. Ich habe nichts davon getestet, also benutze es auf eigenes Risiko usw. Ich bin mir jedoch ziemlich sicher, dass es nichts Schlimmes tun sollte.

EDIT: Beachten Sie, dass llvmund llvm-3.2unabhängig sind. llvmhängt ab von llvm-2.9( siehe hier ), während llvm-3.2ist separat ( siehe Abhängigkeiten hier )

Ich bin mir auch nicht sicher, ob Sie über das Ausfüllen von Registerkarten Bescheid wissen . Dies kann hilfreich sein, wenn Sie nach einem Befehl suchen, den Namen jedoch nicht genau kennen (in diesem Fall hätte sich beispielsweise wahrscheinlich gezeigt, dass der Befehl llvm-configaufgerufen wurde llvm-config-3.2).

andyg0808
quelle
Danke vielmals! Es hat fast funktioniert. Das einzige Problem ist, dass das installierte llvm-3.2 nicht über llvm-config verfügt. Wenn ich make in Halide starte, wird angezeigt, dass kein llvm installiert ist. Ich habe install llvm ausgeführt und jetzt sagt llvm-config --version 2.9. Wenn ich versuche, llvm-3.2 zu installieren, wird mir mitgeteilt, dass es sich um die neueste Version handelt. Es scheint, dass llvm-3.2 und llvm völlig unabhängig sind.
Sehen Sie den neuen Schritt in der Antwort; Wahrscheinlich möchten Sie das llvmPaket ( sudo apt-get purge llvm) deinstallieren, bevor Sie es ausführen, um sicherzustellen, dass Sie die richtige Version erhalten. Mit dem Befehl können Sie jederzeit überprüfen, welche Datei Sie ausführen möchten which [command]. Zum Beispiel which llvm-configsollte lesen /usr/local/bin/llvm-config. Weitere Informationen finden Sie auf de.wikipedia.org/wiki/Which_%28Unix%29 .
andyg0808
Warum ist llvm-config nicht mit llvm-config-3.2 verbunden, so wie es für gcc ist? Ist das eine bewusste Entscheidung?
Janus Troelsen
@JanusTroelsen Ich glaube, es ist eine bewusste Entscheidung. Da die Version von LLVM aus dem llvmPaket für Ubuntu 12.04 verfügbar war llvm-2.9, wurde der llvm-configBefehl mit der llvm-configaus derselben Version verknüpft , d llvm-config-2.9. H. In Ubuntu 13.04 und 13.10, die llvminstalliert Paket LLVM 3.2, und ich würde erwarten , dass es dann auf bis llvm-config-3.2wie llvm-config, die es funktioniert in Ubuntu 13.10.
andyg0808