ios gcc fortran llvm cross-compiling

¿Cómo puedo compilar de forma cruzada GCC para producir libgfortran para dispositivos iOS(arm, armv7)?



llvm cross-compiling (1)

Está intentando crear bibliotecas cross-gcc sin cross binutils. Aquí hay un buen manual para construir cross-gcc para brazo, puedes seguirlo.

¿Qué se entiende por Si se detecta un compilador cruzado? ¿Cómo defino la plataforma objetivo correctamente?

Al configurarlo, también debe configurar --target=arm-apple-darwin . (En mi propia experiencia, no configuré --host en absoluto)

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

Antes de compilar bibliotecas de destino del compilador cruzado, debe compilar binutils para este objetivo.

No puedo decir nada sobre llvm.

Intente hacer todos los pasos en el enlace de arriba.

Necesito compilar las subrutinas Fortran-77 para ser accesible en iOS. Estoy usando GCC con el plugin DragonEgg , así que puedo usar gfortran con el backend LLVM. Seguí esta respuesta, pero estoy atascado cuando se trata de compilar libgfortran para armv7, armv7s y arm64.

  • ¿Puedo construir libgfortran solo o siempre es necesario compilar el conjunto de GCC por completo?
  • ¿Cuál es la forma correcta de producir esta biblioteca para un objetivo diferente? ¿Es posible usar GCC para este paso o necesito LLVM para el brazo * -targets?

Construyendo GCC con arm-targets usando GCC obtengo estos errores:

./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

Construyendo GCC con arm-targets usando LLVM Tengo problemas con configure:

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

El script de configuración indica que

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.

  • ¿Qué se entiende por Si se detecta un compilador cruzado ? ¿Cómo defino la plataforma objetivo correctamente?
  • LLVM usa -arch armv7 etc. como definición del objetivo. ¿Qué está incorporado cuando se usa GCC?