Apakah ada kompiler / emulator Fortran untuk iOS?

7

Adakah yang menemukan emulator atau kompiler Fortran 77 untuk perangkat iOS?

pengguna18788
sumber
1
Mengapa Anda menginginkannya ?
Nama Palsu
@FakeName Numeric dan pustaka pembelajaran mesin, sebagai beberapa contoh.
adib

Jawaban:

4

Ini dapat dilakukan dengan menggunakan plugin Dragonegg untuk GCC (frontend), instalasi LLVM umum (backend), dan penghubung Apple. Saya telah berhasil membangun dan menjalankan aplikasi Fortran 64-bit pada iOS 8.1 yang dibangun pada Mac OS X 10.10 menggunakan GCC 4.8 dan LLVM 3.5. Prosesnya tidak terlalu mudah dan membutuhkan sejumlah peretasan dan beberapa skrip, tetapi langkah-langkah tingkat tinggi adalah:

  1. Instal GCC 4.8 dari HPC untuk Mac OS X ke / usr / local
  2. Instal Dentang / LLVM 3.5 dari llvm.org ke / usr / local
  3. Unduh kode sumber Dragonegg dari situs web LLVM
  4. Bangun dragonegg.so dan instal ke /usr/local/lib/gcc/x86_64-apple-darwin12.5.0/4.8.1/plugin
  5. Unduh sumber GCC 4.8.1
  6. Buat libgfortran untuk arm64 menggunakan kombinasi dentang Apple untuk C / C ++, Dragonegg untuk Fortran, dan beberapa skrip pembungkus untuk menyatukan kompiler
  7. Instal libgfortran.dylib dan libgfortran.3.dylib ke /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib
  8. Instal libgfortran.3.dylib pada iPhone di bawah / usr / local / lib

Sekarang jika Anda sejauh ini, kompilasi file sumber Fortran ke dalam biner iOS menggunakan:

  1. gfortran -O3 -fplugin = dragonegg -fplugin-arg-dragonegg-llvm-codegen-optimalkan = 3 -fplugin-arg-dragonegg-emit-ir -S -o-main.s main.f main.f
  2. llc -mtriple arm64-apple-darwin -filetype = obj -o main.o main.s
  3. ld -arch arm64 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -lSystem -lgfortran main.o -o main

Binari yang telah dikompilasi untuk Dragonegg dan libgfortran dapat ditemukan di sini: http://download.zeroepoch.com/gfortran-ios/gfortran-ios.tar.bz2

PEMBARUAN: Arsip binari yang dikompilasi sekarang berisi pustaka lemak (armv7s, arm64) dan beberapa perbaikan bug pada skrip wrapper.

Eric
sumber
Saya menemukan tautan ini berguna untuk membuat dragonegg.so, stackoverflow.com/questions/26009274/…
Eric
FYI, saya bisa mengkompilasi semua tolok ukur Fortran dari SPEC FP untuk iOS menggunakan metode ini.
Eric
Bisakah Anda lebih spesifik dengan langkah ke-6 Anda, membangun libgfortran untuk arm64? Saya mencoba mencari cara untuk membangunnya tetapi saya tidak berhasil.
Alessandra Siqueira da Silva P
Saya harus menyelesaikan pekerjaan ini dengan cepat sehingga saya tidak membuat catatan, tetapi saya tidak ingin kehilangan binari. Saya hanya ingat saya harus meretas sumbernya sedikit. Mayoritas masalahnya adalah mengatur kompiler fortran ke skrip pembungkus saya karena gfortran memiliki beberapa perpustakaan fortran di dalamnya.
Eric
Terima kasih banyak atas idenya. Berhasil. Mengenai langkah ke-8, saya tidak dapat menyalin dylib ke lokasi yang diusulkan. Aku harus mengubah lokasi seperti ini: install_name_tool -id @executable_path/../Frameworks/libgfortran.3.dylib libgfortran.3.dylib. Dalam XCode diperlukan langkah pembuatan Salin. Salin libgfortran.3.dylib dan tetapkan tujuan ke Executables .
timomeinen
3

Mungkin sebaiknya dilakukan dengan pra-kompiler menerjemahkan Fortran ke C (dan mengintegrasikannya ke dalam Xcode sebagai langkah build terpisah). Salah satu alat tersebut adalah misalnya http://www.greatmigrations.com/tools_gmFortran.aspx

Mungkin kita juga bisa melihat pada kompiler gnu fortran, sejauh yang saya ingat juga dimulai sebagai precompiler yang menerjemahkan Fortran ke C. http://gcc.gnu.org/fortran/

vilmoskörte
sumber