Crosscompilare con Clang
Inviato: lun, 29 mar 2021 12:48
Questo è un breve tutorial per crosscompilare usando clang su OSX 10.13.6 ma che credo si adatti anche a versioni successive.
Prerequisiti sono l'ambiente relativo all'architettura target ed il relativo albero di sviluppo con il makefile adatto a clang.
Se provassimo a compilare con XCode, otterremmo un errore perché la versione rilasciata con High Sierra è obsoleta
ed Apple non consente l'aggiornamento, dobbiamo perciò installare una versione di clang aggiornata con brew
Dopo un tempo piuttosto lunghetto, necessatio a ricompilare da zero tutto clang e llvm, il compilatore sarà disponibile,
ma ancora non utilizzabile in quanto OSX di default usa quello fornito da Apple.
Dovremo aggiungere questa riga in fondo al file .bash_profile nella directory $HOME
A questo punto digitando
clang --version
potremo verificare che il compilatore utilizzato è quello che abbiamo installato con brew.
Ancora non è sufficiente però per compilare il nostro codice per target diverso da quello del Mac ospite,
dobbiamo infatti fare in modo che l'albero di include sia quello corretto.
Nei makefiles del nostro progetto va inserita la clausola
A questo punto possiamo finalmente eseguire una compilazione corretta.
Prerequisiti sono l'ambiente relativo all'architettura target ed il relativo albero di sviluppo con il makefile adatto a clang.
Se provassimo a compilare con XCode, otterremmo un errore perché la versione rilasciata con High Sierra è obsoleta
ed Apple non consente l'aggiornamento, dobbiamo perciò installare una versione di clang aggiornata con brew
Codice: Seleziona tutto
brew install --build-from-source llvm
ma ancora non utilizzabile in quanto OSX di default usa quello fornito da Apple.
Dovremo aggiungere questa riga in fondo al file .bash_profile nella directory $HOME
Codice: Seleziona tutto
export PATH="/usr/local/opt/llvm/bin:$PATH"
clang --version
potremo verificare che il compilatore utilizzato è quello che abbiamo installato con brew.
Ancora non è sufficiente però per compilare il nostro codice per target diverso da quello del Mac ospite,
dobbiamo infatti fare in modo che l'albero di include sia quello corretto.
Nei makefiles del nostro progetto va inserita la clausola
Codice: Seleziona tutto
-I/(percorso completo dell'albero di include fornito con l'albero di sviluppo)/include