Alf*_*ago 2 linker fortran gfortran intel-fortran
好吧,我有这个问题(描述很长,但我觉得很容易解决).我有三个档案:
nrtype.f90,它有一些愚蠢的定义,但它被以下文件使用:
module nrtype
integer, parameter :: I4B = SELECTED_INT_KIND(9)
integer, parameter :: I2B = SELECTED_INT_KIND(4)
integer, parameter :: I1B = SELECTED_INT_KIND(2)
integer, parameter :: SP = KIND(1.0)
integer, parameter :: DP = KIND(1.0D0)
endmodule nrtype
Run Code Online (Sandbox Code Playgroud)
LUd.f90,这是部分工作:
module descomposicionLU
use nrtype
implicit none
contains
subroutine LUd(A, LU, bk)
implicit none
real(DP), intent (in), dimension(:,:) :: A
real(DP), intent (out), dimension(:,:) :: LU
integer(I2B), dimension(size(A,1),2) :: bk
<more code that doesn't worth to mention>
endsubroutine LUd
<more code that doesn't worth to mention>
endmodule descomposicionLU
Run Code Online (Sandbox Code Playgroud)
一个名为的文件FrontBackSub.f90,它完成了工作的另一部分:
module FrontBack
use nrtype
implicit none
contains
function FrontSLU(A,B) result (X)
implicit none
real(DP), dimension(:,:), intent (in) :: A, B
real(DP), dimension(size(B,1),size(B,2)) :: X
<more code>
endfunction FrontSLU
endmodule FrontBack
Run Code Online (Sandbox Code Playgroud)
最后main.f90,这是这样的:
program main
use descomposicionLU
use FrontBack
implicit none
integer, parameter :: N=3
real(DP), dimension(N,N) :: MA, MLU
integer(I2B), dimension(N,2) :: Vbk
MA(1,:)=(/1.0, 7.0, 11.0/)
MA(2,:)=(/14.0, 24.0, 19.0/)
MA(3,:)=(/7.0, 8.0, 9.0/)
call LUd(MA, MLU, Vbk)
endprogram main
Run Code Online (Sandbox Code Playgroud)
但是,问题出现在编译期间,ifort nrtype.f90 FrontBackSub.f90 LUd.f90 FrontBackSub.f90 main.f90我得到了:
/tmp/ifortbW2y7D.o: In function `frontback._':
FrontBackSub.f90:(.text+0x0): multiple definition of `frontback._'
/tmp/ifortVQdBCN.o:FrontBackSub.f90:(.text+0x0): first defined here
/tmp/ifortbW2y7D.o: In function `frontback_mp_frontslu_':
FrontBackSub.f90:(.text+0x10): multiple definition of `frontback_mp_frontslu_'
/tmp/ifortVQdBCN.o:FrontBackSub.f90:(.text+0x10): first defined here
/tmp/ifortbW2y7D.o: In function `frontback_mp_backs_':
FrontBackSub.f90:(.text+0x460): multiple definition of `frontback_mp_backs_'
/tmp/ifortVQdBCN.o:FrontBackSub.f90:(.text+0x460): first defined here
Run Code Online (Sandbox Code Playgroud)
或者,更清楚,有gfortran nrtype.f90 FrontBackSub.f90 LUd.f90 FrontBackSub.f90 main.f90:
/tmp/ccpZnjOp.o: In function `__frontback_MOD_backs':
FrontBackSub.f90:(.text+0x0): multiple definition of `__frontback_MOD_backs'
/tmp/ccsr4QjQ.o:FrontBackSub.f90:(.text+0x0): first defined here
/tmp/ccpZnjOp.o: In function `__frontback_MOD_frontslu':
FrontBackSub.f90:(.text+0x582): multiple definition of `__frontback_MOD_frontslu'
/tmp/ccsr4QjQ.o:FrontBackSub.f90:(.text+0x582): first defined here
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
因此,它表示函数(它是复数,因为当我添加新函数时,问题扩展到它们)FrontBackSub.f90被定义了几次,显然,它们不是.
哪个问题我看不到?
谢谢你的朋友们.
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |