fortran サブルーチンを呼び出す ac コードをコンパイルしようとしていますが、常にエラーが発生します。
Fortran コードは次のとおりです。
!fort_sub.f90
module myadd
use iso_c_binding
implicit none
contains
subroutine add1(a) bind(c)
implicit none
integer (c_int),intent (inout) :: a
a=a+1
if(a>10) then
stop
endif
end subroutine add1
end module myadd
そしてここにcコードがあります
//main.cpp
extern "C"{ void add1(int * a); }
int main(void){
int a=2;
add1(&a);
return 0;
}
それらをコンパイルすると
ifort -c fort_subs.f90
icc main.cpp fort_subs.o
エラーが発生します
Undefined symbols for architecture x86_64: "_for_stop_core", referenced from: _add1 in fort_subs.o ld: symbol(s) not found for architecture x86_64
そして、それらをコンパイルすると
icc -c main.cpp
ifort -nofor-main fort_subs.f90 main.o
エラーが発生します
Undefined symbols for architecture x86_64: "___gxx_personality_v0", referenced from: Dwarf Exception Unwind Info (__eh_frame) in main.o "___intel_new_feature_proc_init", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64
では、なぜこれらのエラーが発生し、どのように解決すればよいのでしょうか?
IBMコンパイラには、Cコンパイラにfortranライブラリをリンクするように指示するオプション「-lxlf90」があることを知っています。これにより、「_for_stop_core」エラーが解決されます。intel c コンパイラに同様のオプションはありますか?