gpt4 book ai didi

ubuntu - gfortran 编译目标文件错误 crt1.o : In function `_start' :

转载 作者:行者123 更新时间:2023-12-04 19:13:23 26 4
gpt4 key购买 nike

我已经编译了一个fortran文件并创建了一个目标文件。之后我尝试执行目标文件但出现错误。操作系统是Ubuntu,错误如下:

编译源文件

gfortran -O3 reader.f iotools.c -o reader.x

执行目标文件
gfortran reader.o

和错误

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function _start': (.text+0x20): undefined reference tomain' reader.o: In function MAIN__': fort77-2624-1.c:(.text+0xf): undefined
reference to
ireadc_' fort77-2624-1.c:(.text+0x278): undefined reference to s_wsle' fort77-2624-1.c:(.text+0x291): undefined
reference to
do_lio' fort77-2624-1.c:(.text+0x2aa): undefined reference to do_lio' fort77-2624-1.c:(.text+0x2c3): undefined
reference to
do_lio' fort77-2624-1.c:(.text+0x2c8): undefined reference to `e_wsle' collect2: error: ld returned 1 exit status



阅读器.f 文件
ccccccccccccccccccccccccccccccccccccccccccccccccccccccc
C Basic fortran (and c tools) code to read fMRI images
C Compile linux:g77 -O3 reader.f iotools.c -o reader.x
c In Cygwin compile as : (to prevent max memory bug)
c g77 -o reader.x -Wl,--stack,8388608 reader.f iotools.c
c Execute: reader.x < imagename.img
c where "imagename.img" is a huge image fmri file
c------------------------------------------------------
c Standard output: the full correlation matrix
c------------------------------------------------------
parameter(maxsites=147456,maxtime=400,mintime=1)
real a(maxsites*maxtime), b(maxsites*maxtime)
real*8 ax, sxx(maxsites), sxy, r
integer iflag(maxsites)

c.... Read image file into a
i=ireadc(a,4*maxsites*maxtime)
do ix=1, maxsites
do it=1, maxtime
b((ix-1)*maxtime+ it) = a((it-1)*maxsites + ix)
enddo
enddo

do ix=1, maxsites
iflag(ix)=0
ax=0.d0
sxx(ix)=0.d0
do it=mintime, maxtime
ax=ax + dble(b((ix-1)*maxtime + it))
enddo
ax=ax/dfloat(1+maxtime-mintime)! mean activity for this voxel
if(ax.gt.7000.d0.and.ax.lt.14000) then
iflag(ix)=1 ! flag the usefull voxels
do it=mintime, maxtime
ic=(ix-1)*maxtime + it
b(ic) = b(ic) - ax
sxx(ix) = sxx(ix) + dble(b(ic)*b(ic))
enddo
endif
enddo
c--------------------------------------------------------------
do l1=1, maxsites-1
if(iflag(l1).eq.1) then
do l2=l1+1, maxsites
if(iflag(l2).eq.1) then
sxy=0.d0
do it=mintime, maxtime
ic1 = (l1-1)*maxtime + it
ic2 = (l2-1)*maxtime + it
sxy = sxy + dble(b(ic1)*b(ic2))
enddo
r=sxy/dsqrt(sxx(l1)*sxx(l2))!linear l1-l2 correlation
write(*,*) l1,l2,r
endif
enddo
endif
enddo


end

最佳答案

您当然不会执行对象 .o 文件。您链接它以创建一个可执行文件。

但请注意,您没有创建 reader.o文件,您创建一个 reader.x文件在:

gfortran -O3 reader.f iotools.c -o reader.x

使用此命令可执行文件 reader.x应该创建并且您应该能够执行它。没有第二个 gfortran命令。

或者

您可以分两步完成。先编译再链接
gfortran -c -O3 reader.f iotools.c -o reader.o

gfortran reader.o

在这种情况下,第二个命令会创建一个名为 a.out 的可执行文件。 .

两种方式都是可能的。

这些是绝对的基础知识,请在尝试更多之前先进行一些研究。阅读教程,在那里搜索问题。这里有很多非常相似的问题。我在这里回答只是为了清除您的具体困惑,这些困惑可能无法从某些重复中直接清楚。

关于ubuntu - gfortran 编译目标文件错误 crt1.o : In function `_start' :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46999109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com