2016-01-24 18 views
6

Ho bisogno di compilare le subroutine Fortran-77 per essere accessibili su iOS. Sto usando GCC con il plugin DragonEgg, quindi posso usare gfortran con il backend LLVM. Ho seguito this answer ma sono bloccato quando si tratta di creare libgfortran per armv7, armv7s e arm64.Come posso eseguire una cross-compilazione di GCC per produrre libgfortran per dispositivi iOS (arm, armv7)?

  • Posso creare libgfortran da solo o è sempre necessario compilare completamente la suite GCC?
  • Qual è il modo corretto di produrre questa libreria per un target diverso? È possibile utilizzare GCC per questo passaggio o ho bisogno di LLVM per il braccio * -target?

Costruire GCC con braccioli obiettivi utilizzando GCC ottengo questi errori:

./configure --prefix=/tmp/out --host=arm-apple-darwin --enable-languages=fortran 
make 
… 
make[2]: arm-apple-darwin-ar: No such file or directory 
make[2]: *** [libiberty.a] Error 1 
make[1]: *** [all-libiberty] Error 2 

Costruire GCC con braccioli obiettivi utilizzando LLVM ho problemi con configurazione:

export CC="$(xcrun -sdk iphoneos -find clang)" 
export CPP="$CC -E" 
export CFLAGS="-arch armv7 -arch armv7s -arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=9.2" 
export AR=$(xcrun -sdk iphoneos -find ar) 
export RANLIB=$(xcrun -sdk iphoneos -find ranlib) 
export CPPFLAGS="-arch armv7 -arch armv7s -arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=9.2" 
export LDFLAGS="-arch armv7 -arch armv7s -arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path)" 

./configure --prefix=/tmp/out --enable-languages=fortran --host=arm-apple-darwin --disable-shared 
… 
checking how to run the C preprocessor... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -E 
configure: error: in `/Users/timo/temp/gcc-4.8.5-build/fixincludes': 
configure: error: C preprocessor "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -E" fails sanity check 
See `config.log' for more details. 
make[1]: *** [configure-fixincludes] Error 1 

Lo script di configurazione afferma che

configure: WARNING: If you wanted to set the --build type, don't use --host. 
If a cross compiler is detected then cross compile mode will be used. 
  • Cosa si intende per Se viene rilevato un cross compilatore? Come definire correttamente la piattaforma di destinazione?
  • LLVM utilizza -arch armv7 ecc. Come definizione di destinazione. Cosa si intende quando si usa GCC?
+0

Non conosco libgfortran da solo, ma gfortran non può essere costruito senza costruire anche gcc. –

+0

> Come si definisce correttamente la piattaforma di destinazione? Dovresti usare --target. --host imposta la piattaforma host, cioè quella su cui verrà eseguito il compilatore. –

+0

@MikhailMaltsev Utilizzando --target anziché --host restituisce [questo errore] (https://gist.github.com/anonymous/bee6afa597903cefd7c8): 'configure: errore: impossibile eseguire programmi compilati C. Se intendevi eseguire la compilazione incrociata, utilizza --host. – timomeinen

risposta

1

Si sta tentando di creare librerie cross-gcc senza crossutils. Here è un buon manuale per creare cross-gcc per braccio, puoi seguirlo.

What is meant by If a cross compiler is detected? How do I define the target platform correctly?

Durante la configurazione è necessario impostare anche --target=arm-apple-darwin. (Nella mia esperienza non ho impostato --host affatto)

make[2]: arm-apple-darwin-ar: No such file or directory 

Prima di costruire braccio trasversale compilatore librerie di destinazione si dovrebbe costruire binutils per questo target.

Non posso dire nulla su llvm.

Quindi prova solo a fare tutti i passaggi nel link sopra.

+0

Non esistono binutils forniti da Apple? Ad esempio 'xcrun --sdk iphoneos --find ar' restituisce'/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar'. – timomeinen

+0

Costruisce _binutils_ con '--target = arm-apple-darwin' dall'albero dei sorgenti di sviluppo funziona. Ho installato gli strumenti su _/opt/cross/bin_. Sfortunatamente, GCC non supporta _arm-apple-darwin_: '*** Configurazione arm-apple-darwin non supportato' (Output dello script gcc configure). – timomeinen

Problemi correlati