Muszę skompilować podprogramy Fortran-77, aby były dostępne na iOS. Używam GCC z wtyczką DragonEgg, więc mogę używać gfortran z backendem LLVM. Śledziłem this answer, ale utknąłem, gdy chodzi o kompilację libgfortran dla armv7, armv7s i arm64.Jak mogę cross-kompilować GCC do produkcji libgfortran dla urządzeń z systemem iOS (ramię, armv7)?
- Czy mogę zbudować libgfortran samodzielnie, czy zawsze jest konieczne całkowite skompilowanie zestawu GCC?
- Jaki jest prawidłowy sposób utworzenia tej biblioteki dla innego celu? Czy możliwe jest użycie GCC dla tego kroku, czy też potrzebuję LLVM dla sygnałów * arm-owych?
budynku GCC z ARM-cele za pomocą GCC otrzymuję te błędy:
./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
budowanie GCC z ARM-cele za pomocą LLVM mam problemy z 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
skrypt configure oznacza, że
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.
- Co oznacza Jeśli zostanie wykryty kompilator krzyżowy? Jak poprawnie zdefiniować platformę docelową?
- LLVM używa -arch armv7 itd. Jako definicji celu. Co jest nedded podczas korzystania z GCC?
Nie wiem tylko o libgfortran, ale gfortran nie może zostać zbudowany bez budowania gcc. –
> Jak poprawnie zdefiniować platformę docelową? Powinieneś użyć --target. --host ustawia platformę hosta, tj. tę, na której będzie uruchamiany kompilator. –
@MikhailMaltsev Korzystanie z --target zamiast --host daje [ten błąd] (https://gist.github.com/anonymous/bee6afa597903cefd7c8): 'configure: error: nie można uruchomić skompilowanych programów C. Jeśli chcesz przechodzić przez kompilację, użyj --host' – timomeinen