Attualmente mi interessa l'ARM in generale e in particolare i target iphone/android. Ma voglio solo sapere di più su Clang, dal momento che sembra di avere un ruolo importante negli anni a venire.clang: come elencare le architetture di destinazione supportate?
ho cercato
clang -cc1 --help|grep -i list
clang -cc1 --help|grep arch|grep -v search
clang -cc1 --help|grep target
-triple <value> Specify target triple (e.g. i686-apple-darwin9)
So clang ha parametro -triplet, ma come posso elencare tutti i possibili valori per questo? Ho scoperto che clang è molto diverso da gcc rispetto alla cross-compiling, nel mondo GCC dovresti avere un binario separato per tutto, come PLATFORM_make o PLATFORM_ld (i * 86-pc-cygwin i * 86 - * - linux-gnu ecc. http://git.savannah.gnu.org/cgit/libtool.git/tree/doc/PLATFORMS)
nel mondo clang, è solo un binario (come ho letto su alcuni forum). Ma come ottengo l'elenco degli obiettivi supportati? E se il mio obiettivo non è supportato sulla mia distro (linux/windows/macos/qualunque) come posso ottenere quello che supporta più piattaforma?
se svn ultima clang come questo:
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
potrò ottenere la maggior parte delle piattaforme? Sembra che Clang non sia stato costruito con la cross-compiling in mente, ma dato che è basato su llvm, dovrebbe essere molto cross-friendly in teoria? grazie!
non una risposta completa, ma LLC --version vi darà gli obiettivi –
si penso' Dovremo guardare la fonte per vedere le terne.E a quanto ho capito, una build predefinita di clang includerà il supporto di base per la compilazione incrociata. Il supporto di base trasforma solo il codice in file oggetto (purché l'assemblatore integrato supporti la tripla, altrimenti dovrai prendere i file .s). Dovrai fornire intestazioni, librerie, un linker (fino a quando lld funziona, comunque), ecc. – bames53
Sebbene l'installazione predefinita abbia solo eseguibili clang e clang ++, come altre piattaforme puoi creare copie o hardlink di loro con le triple e le quad codificato nei nomi. clang ++ e clang sono in realtà solo copie l'una dell'altra controlla il nome dell'eseguibile per vedere come elaborare l'input. –