我已阅读了与错误消息相关的许多问题:
/ usr / lib / gcc / x86_64-linux-gnu / 7 /../../../ x86_64-linux-gnu / Scrt1.o:F fction _start':
(.text+0x20): undefined reference to
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
并给出正确答案
但是,如果我将编译链接分解为2个步骤
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
谁能看到我做错了什么?
答案 0 :(得分:2)
-o
指定输出名称,而不指定对象...因此-o InvertMultiply.o
指定输出为InvertMultiply.o
。只保留了库,它们不包含main
。
请另外指定一个输出文件(或完全省略-o
,在这种情况下,可执行文件很可能是a.out
):
gfortran -c InvertMultiply.f90
gfortran -o InvertMultiply InvertMultiply.o -llapack -lblas