2014-06-30 13 views
7

Il driver gcc può essere configurato per utilizzare un particolare linker, opzioni particolari e altri dettagli (ad esempio, sovrascrivere le intestazioni di sistema) utilizzando i file .specs.Esiste un file equivalente a .spec per Clang/LLVM e dove posso trovare un riferimento?

Il manuale corrente (di questo manuale) per la versione di GCC (4.9.0) describes the Spec Files here.

Esiste un meccanismo simile per Clang/LLVM. Apparentemente Clang ha anche the notion of a driver, ma non sono riuscito a trovare alcuna documentazione sulla presenza di file Spec o di un meccanismo simile per Clang e su come usarli.

Sono interessato a questo sia per C che per C++, ma probabilmente un puntatore a uno di essi mi consentirà di iniziare.

L'obiettivo è sovrascrivere l'intestazione del sistema e i percorsi della libreria, nonché il linker come accennato in precedenza.

risposta

3

Secondo la documentazione, il conducente Clang non ha un equivalente diretto a GCC file spec:. ​​

"Il conducente non ha clang corrispondente diretta per‘caratteristiche’La maggior parte delle funzionalità che è incorporato nella le specifiche sono nelle routine di traduzione degli argomenti specifici dello strumento, le parti delle specifiche che controllano la pipeline di compilazione fanno generalmente parte della fase Pipeline. " (da)

Il percorso di ricerca #include può essere sovrascritto utilizzando -nostdinc e -isystem.

Tuttavia, non so come sovrascrivere il linker o sovrascrivere completamente il percorso di ricerca della libreria.

+0

Per sovrascrivere il percorso di ricerca del linker, controllare la pagina man di 'ld' per identificare i flag necessari (ad es.' -syslibroot') e dire a clang di passarli al linker tramite '-Wl'. Ad esempio, questo comando mi ha permesso di usare una versione personalizzata di 'libstdC++': 'clang ++ -std = C++ 11 -stdlib = libstdC++ -nostdinC++ -isystem/percorso/a/alt-stdlib/include/C++ -isistema/percorso/a/alt-stdlib/include/C++/x86_64-apple-darwin14.4.0 -L/percorso/a/alt-stdlib/lib -lstdC++ -Wl, -syslibroot,/usr/lib -Wl, - syslibroot,/percorso/to/alt-stdlib/lib test.cpp' –

Problemi correlati