llvm-gcc(Windows): "./configure script" Kompiler Test unterbinden/umgehen?



  • Ich probiere/spiele gerade etwas mit llvm unter Windows herum. Ich wollte schauen wie weit ich komme z.B. wxWidgets (Oder auch andere Projekte) mit llvm zu erstellen.

    Da es für clang kein Binarypacket für Windows gibt. Verwende ich den llvm-gcc.

    Ich benutze diesen mit MinGW in einer MSYS Shell.

    Dem configure Script von wxWIN gebe ich folgende Umgebungsvariablen mit:

    CFLAGS="-emit-llvm -c" CC=llvm-gcc CXX=llvm-g++
    

    Das Problem ist nun, dass llvm keine "normalen" Binarys erstellt welche direkt aufgeführt werden können. Und daher der configure Script mit folgendem Fehler abbricht:

    checking for gcc... llvm-gcc
    checking for C compiler default output file name... b.out
    checking whether the C compiler works... configure: error: cannot run C compiled
     programs.
    If you meant to cross compile, use `--host'.
    See `config.log' for more details.
    

    Gibt es einen Parameter, mit welchem ich deise Überprüfung ausschalten oder ignorieren könnte?



  • Was macht der llvm denn dann?



  • Mein Tipp: Die Object File vom LLVM-GCC können nur mit dem LLVM-Linker zusammmengestellt werden.



  • Zeus schrieb:

    Mein Tipp: Die Object File vom LLVM-GCC können nur mit dem LLVM-Linker zusammmengestellt werden.

    Dann wäre zu überprüfen, ob zum Linken direkt der llvm-ld oder doch der llvm-gcc aufgerufen wird, der dann ja wahrscheinlich den llvm-ld aufrufen würde.



  • Wie wxSkip sagte ruft der llvm-gcc schon den richtigen Linker auf.
    Dennoch wird keine exe Datei sondern LLVM Bytecode erstellt. Was er auch soll, und was ich auch möchte.

    Diesen Bytecode kann man anschließend mit lli, einer art JIT Kompiler, starten. Oder man Benutzt llc und erstellt draus eine normale exe.

    Hier mal die Übersicht der llvm Werkzeuge: http://llvm.org/docs/CommandGuide/

    Der configure script erwarted aber eine native exe um zu sehen ob der Kompiler funktioniert.

    Ich hatte jetzt einfach mal den Test im configure Script ausgeklammert, dann kommt allerdings etwas später ein anderer Fehler:

    checking size of char... configure: error: cannot compute sizeof (char), 77
    


  • Osbios schrieb:

    Wie wxSkip sagte ruft der llvm-gcc schon den richtigen Linker auf.
    Dennoch wird keine exe Datei sondern LLVM Bytecode erstellt. Was er auch soll, und was ich auch möchte.

    Diesen Bytecode kann man anschließend mit lli, einer art JIT Kompiler, starten. Oder man Benutzt llc und erstellt draus eine normale exe.

    Hier mal die Übersicht der llvm Werkzeuge: http://llvm.org/docs/CommandGuide/

    Der configure script erwarted aber eine native exe um zu sehen ob der Kompiler funktioniert.

    Ich hatte jetzt einfach mal den Test im configure Script ausgeklammert, dann kommt allerdings etwas später ein anderer Fehler:

    checking size of char... configure: error: cannot compute sizeof (char), 77
    

    Jetzt versucht er wahrscheinlich, ein Programm auszuführen, dass sizeof(char) zurückgibt. Da du Bytecode hast, funktioniert das aber nicht. Warum willst du wxWidgets eigentlich nicht mit dem MinGW builden? Das funktioniert doch prima.



  • Wer sagt denn, dass ich wxWidget nicht anderweitig benutze? Das funktioniert wunderbar mit vs.

    Hier ging es mir nur darum, mal ein wenig mit llvm herum zu experimentieren. Es ist halt noch mitten in der Entwicklung, liefert aber schon sehr vielversprechende Ergebnisse. Ich wollte nur sehen ob ich ohne alzugroßen Aufwand eigene Projekte damit erstellen kann.
    Leider ist dass noch nicht der Fall. (Bin auch auf andere Probleme gestoßen)
    Ich werde jedoch weiterhin von Zeit zu Zeit ein Auge auf llvm werfen.



  • 😮 Sry, aber du verstehst den Sinn von LLVM nicht, oder vielleicht doch? In erste Linie ist es ein Compiler Framework um Backend Compiler (Bytecode zu maschinenabhängige Code Transformation, Optimierung, etc.) zu schreiben und wird schon sehr gern eingesetzt: http://llvm.org/Users.html



  • Ich verstehe sehr wohl den Sinn von llvm.

    Ich weiß dass llvm schon in produktiven Systemen eingesetzt wird. Bestes Beispiel ist wohl die OpenGL Implementierung von Apple. Oder FreeBSD welches mit clang erstellt werden kann. Dabei wird aber oft C eingesetzt, mich interessierte jedoch die C++ Unterstützung.

    Außerdem war/ist hier das Buildsystem mein Problem. Bzw. meine Mangel an Erfahrung. Eventuell könnte man es zum laufen bringen wenn man ihm sagt dass man ein Crosskompilat erstellen möchte. Aber da möchte ich mich da jetzt nicht so tief reinhängen.


Anmelden zum Antworten