LLVM & Clang kann nicht kompiliert werden, für die eine unterstützte arch
Unter Ubuntu 64 bit ich habe
llc --version
LLVM (http://llvm.org/):
LLVM version 3.1
Optimized build with assertions.
Built Oct 15 2012 (18:15:59).
Default target: x86_64-pc-linux-gnu
Host CPU: btver1
Registered Targets:
arm - ARM
mips - Mips
mips64 - Mips64 [experimental]
mips64el - Mips64el [experimental]
mipsel - Mipsel
thumb - Thumb
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
Kann ich das nicht
clang -march=arm -x c++ /tmp/cpp.cpp
error: unknown target CPU 'arm'
Bin ich hier etwas fehlt ? Warum kann ich nicht kompilieren für ARM ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
den llvm-linker-links für die Gastgeber, die nur eines der Ziele, die es nicht Verbindung zu jedem Ziel in der Liste. es wird auf jeden Fall kompilieren für jedes Ziel. Im Grunde Klang geht von C/C++ - bytecode, dann llc übernimmt bytecode und die Montage für das spezifische Ziel (neue experrimental option, um den bytecode direkt auf die Objekt-Datei), dann müssen Sie ein cross-assembler und ein cross-linker, nehmen Sie die Letzte Meile (ich verwende gnu binutils). Leider habe ich festgestellt, dass das Geräusch zu bytecode ist nicht vollständig generisch sein (ich hatte gehofft und erwartet, dass es sein würde), tut es in der Tat, ändern Sie die target-independent output, basierend auf dem Ziel. Das Beispiel unten mit dem host dreifach-anstelle von -im März darf meine Beispiele richtig baut auf mehreren Rechnern.
Habe ich nicht, aber bevor lange Experimentieren Sie mit mit der llc direkt zum Objekt (eigentlich habe ich versucht es auf einen einfachen test, aber habe es nicht auf alles, was größer oder veröffentlicht es überall).
Um eine Liste der Optionen von clang-compiler, mit
Um das Ziel zu bestimmen, verwenden Sie
-triple
denen "Verkäufer" und "os" sollte ersetzt werden durch den tatsächlichen Hersteller und os-Namen. Es kann auch ersetzt werden mit
unknown
.triple
ist ein string in der formARCHITECTURE-VENDOR-OS
oderARCHITECTRUE-VENDOR-OS-ENVIRONMENT
zum Beispiel:x86_64-apple-darwin10
clang
(3.6) hat keine option-triple
->error: unknown argument
(auch nicht in-help
)März ist LLVM-interne tools die Kommandozeilen-option und ist nicht verbunden mit clang überhaupt. Wenn Sie brauchen, um zu kompilieren für andere Ziel, das Sie benötigen, um das Ziel zu bestimmen Drilling. Dies kann auf mehrere Arten geschehen (ich erinnere mich nicht beiläufig, ob Sie die Arbeit mit 3.1, aber Sie auf jeden Fall funktionieren mit 3.2):
arm-none-linux-gnueabi-clang kompilieren und alles über es
-target
option, z.B.clang -target arm-none-linux-gnueabi
-target
option funktioniert, danke!--target
(mit 2 führenden Bindestriche)?Du bist verwirrend, Ihre Fahnen. clang ist
-march=
will eine Prozessor-Familie. Sie meinte wahrscheinlich verwendenclang -arch arm
statt.clang -arch arm -x c++ /tmp/cpp.cpp
führt zuclang: warning: argument unused during compilation: '-arch arm'
dies nicht mein problem lösenAls dieser Kommentar sagt diese option, es ist noch nicht unterstützt unter linux, für jetzt.
"-arch arm" ist äquivalent zu "-arch armv4t" im Klang. Ich nehme an, dass eine generische "arm" Ziel ist es nicht erlaubt mit "-march=", die verlangen sollten, etwas genauer, wie "armv6", "thumbv7", "armv4t", ...
Versuchen Sie, einen bestimmten Subarchitektur.