Kompilieren mit clang anstelle von gcc
Heruntergeladen habe ich openssh-6.4p1
für Linux, und ich möchte, um es zu kompilieren mit clang
statt gcc
. Wie kann ich sagen, die Zusammenstellung der engine zu tun? Muss ich ändern configure
?
- Ausführung:
CC=clang ./configure ...
- Das funktioniert, aber wie kann ich die erzeugt LLVM-Module, die während des Prozesses?
- Ich weiß nicht viel über LLVM. Ich weiß nicht von irgendeiner Weise, es zu tun, es sei denn, LLVM bauen kann sowohl die .o Datei-und Modul-Datei in den gleichen Befehl. Wenn Sie es kann, Sie können zusätzliche Argumente an die compile-Zeile, um zu erzwingen, dass die Verwendung von CFLAGS. E. g.,
CC=clang CFLAGS='-emit-llvm' ./configure
. Wenn Sie zum ausführen der LLVM getrennt, einmal um das Objekt und einmal für das Modul, dann ist es wahrscheinlich, es gibt keinen Weg, es zu tun, ohne größere änderungen an der build-Umgebung, weil Sie haben, um eine völlig neue Reihe von Regeln. - Ich will einfach nur, um die IR-Darstellung der einzelnen C-Quell-Datei, so kann ich eine Analyse durchführen, die auf die IR. Nachdem ich analysieren, soll ich dann kompilieren Sie alle IR-Dateien in das native-code.
- Verwenden Sie '-flto " - option.
- Wird das kompilieren nur IR-Dateien, oder wird es zu kompilieren der Binärdateien und lassen Sie die IR-Dateien auch dort? Ich bin mir nicht sicher, ich bin das Verständnis der Anweisungen.
- mit
-flto
alle Objekt-Dateien werden in IR. Es gibt auch eine linker-option (wenn Siegold
) zum halten der kombinierten IR-Modul, z.B.,-Wl,-plugin-opt=also-emit-llvm
- Der kombinierte IR-Modul, das eine große Objekt-Datei, nehme ich an?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, verwenden Sie die option-Befehl wie diesen:
dann können Sie wickeln Sie den clang-compiler-Einstellungen in der wenn () - Bedingung so:
clang -emit-llvm somefile.c -S -o somefile.ll
.