2016-01-24 8 views
6

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?
+0

Nie wiem tylko o libgfortran, ale gfortran nie może zostać zbudowany bez budowania gcc. –

+0

> Jak poprawnie zdefiniować platformę docelową? Powinieneś użyć --target. --host ustawia platformę hosta, tj. tę, na której będzie uruchamiany kompilator. –

+0

@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

Odpowiedz

1

Próbujesz budować biblioteki cross-gcc bez cross binutils. Here to dobra instrukcja do budowania cross-gcc dla ramienia, możesz go śledzić.

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

Podczas konfiguracji należy również ustawić --target=arm-apple-darwin. (W moim doświadczeniu nie ustawić --host w ogóle)

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

Przed budowania ramion cross-kompilatora biblioteki docelowych należy budować binutils do tego celu.

Nie można nic powiedzieć o LVVM.

Po prostu spróbuj wykonać wszystkie kroki w powyższym linku.

+0

Czy binutils nie są dostarczane przez firmę Apple? Na przykład 'xcrun --sdk iphoneos - find ar' daje'/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar'. – timomeinen

+0

Budowanie _binutils_ z '--target = arm-apple-darwin' z drzewa deweloperskiego działa. Zainstalowałem narzędzia do _/opt/cross/bin_. Niestety GCC nie obsługuje _arm-apple-darwin_: '*** Konfiguracja arm-apple-darwin nie jest obsługiwana' (wyjście skryptu konfiguracyjnego gcc). – timomeinen

Powiązane problemy