Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 在函数“%u start';”中加载报告:(.text+;0x20):对“main';_Fortran_Gfortran - Fatal编程技术网

Fortran 在函数“%u start';”中加载报告:(.text+;0x20):对“main';

Fortran 在函数“%u start';”中加载报告:(.text+;0x20):对“main';,fortran,gfortran,Fortran,Gfortran,我已通读了与错误消息相关的许多问题: /usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/Scrt1.o:在函数\u start'中: (.text+0x20):未定义对main'的引用 没有找到这个问题的答案 我有: Program InvertMultiply implicit none integer (kind=4),parameter :: nx=3 integer (kind=4) :: ipiv(nx) int

我已通读了与错误消息相关的许多问题:

/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/Scrt1.o:在函数
\u start'中:
(.text+0x20):未定义对
main'的引用 没有找到这个问题的答案

我有:

Program InvertMultiply

implicit none
integer (kind=4),parameter :: nx=3
integer (kind=4) :: ipiv(nx)
integer (kind=4) :: info,i,j
real (kind=8) :: A(nx,nx), B(nx,nx), C(nx,nx), work(nx)
real (kind=8) :: alpha,beta

external DGEMM
external DGETRF
external DGETRI

A=reshape((/1,-1,-1,0,1,0,0,0,1/),(/3,3/));
B=A                           ! copy of A
call DGETRF(nx, nx, B, nx, ipiv, info)
call DGETRI(nx, B, nx, ipiv, work, nx, info)
alpha=1
beta=0
CALL DGEMM('N','N',nx,nx,nx,alpha,A,nx,B,nx,beta,C,nx)
print *,'A*Ainv'
do i=1,nx
  write(*,fmt="(6(1x,f4.1))")C(i,:)
end do
! should be diagonal
End Program InvertMultiply
用于确保LAPACK例程可用。 我可以编译并链接到:

gfortran  InvertMultiply.f90 -llapack -lblas
a.out
生成并给出正确答案

但是如果我将编译链接分为两个步骤

gfortran -c InvertMultiply.f90

gfortran  -o InvertMultiply.o -llapack -lblas
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In     function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

有人知道我做错了什么吗?

-o
指定输出名称,而不是对象。。。因此
-o InvertMultiply.o
将输出指定为
InvertMultiply.o
。只剩下库,它们不包含
main

请另外指定一个输出文件(或完全省略
-o
,在这种情况下,可执行文件很可能是
a.out
):


我碰巧在编译模块时遇到问题,因此如果有人遇到问题,请确保在编译模块时使用
-c
(可能这是常识,但我对FORTRAN是新手,因此我确信在某个时候会再次出现错误,并查看我自己的评论)。
gfortran -c InvertMultiply.f90
gfortran -o InvertMultiply InvertMultiply.o -llapack -lblas