我需要編譯Fortran-77子程序才能在iOS上訪問。我使用GCC和DragonEgg插件,所以我可以在LLVM後端使用gfortran。我跟着this answer,但我堅持談到爲armv7,armv7s和arm64構建libgfortran。如何交叉編譯GCC以爲iOS設備(arm,armv7)生成libgfortran?
- 我可以單獨構建libgfortran還是始終需要完全編譯GCC套件?
- 爲不同的目標生成這個庫的正確方法是什麼?這個步驟可以使用GCC嗎?還是我需要LLVM作爲arm *目標?
大廈GCC使用GCC ARM的目標,我得到這些錯誤:
./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
大廈GCC使用LLVM臂目標我有一個配置的問題:
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
配置腳本表示
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.
- 什麼意思是如果檢測到交叉編譯器?我如何正確定義目標平臺?
- LLVM使用-arch armv7等作爲目標定義。使用GCC時需要什麼?
我不知道libgfortran是單獨的,但gfortran不能在沒有構建gcc的情況下構建。 –
>如何正確定義目標平臺? 你應該使用--target。 --host設置主機平臺,即編譯器將運行的平臺。 –
@MikhailMaltsev使用--target而不是--host會產生[this error](https://gist.github.com/anonymous/bee6afa597903cefd7c8):'configure:error:無法運行C編譯的程序。 如果您想交叉編譯,請使用--host.' – timomeinen