我喜欢在C ++中使用gzstream库,并希望在Fortran77代码中使用类似的功能。但是,我的MWE没有找到引用,如果我安装了正确的Fortran包装器,我也不清楚。
DESY提供了有关使用Fortran中的zlib的文档,但没有说明它所引用的zlib版本或如何获取Fortran包装器。
我希望尽可能使用标准软件包,以便更新。
dpkg -l 'zlib*'
的输出:
||/ Name Version Architecture Description
+++-===========================-==================-==================-===========
un zlib1 <none> <none> (no description available)
un zlib1-dev <none> <none> (no description available)
ii zlib1g:i386 1:1.2.8.dfsg-2ubun i386 compression library - runtime
ii zlib1g-dev:i386 1:1.2.8.dfsg-2ubun i386 compression library - development
zlib1-dev
没有安装候选人。
dpkg -L zlib1g-dev:i386
显示静态库的位置
/usr/lib/i386-linux-gnu/libz.a
因此,为了排除库路径问题,我正在尝试编译
gfortran -fdefault-real-8 -fdefault-double-8 -O -Wall -Wtabs zlibtest.f /usr/lib/i386-linux-gnu/libz.a
我正在获取
/tmp/ccWl8klj.o: In function `MAIN__':
zlibtest.f:(.text+0x26): undefined reference to `gzopen_'
zlibtest.f:(.text+0xfd): undefined reference to `gzwrite_'
zlibtest.f:(.text+0x128): undefined reference to `gzclose_'
collect2: error: ld returned 1 exit status
我的MWE代码:
program zlibtest
implicit none
integer ii
integer fhandle, istat
character*256 outline
parameter (fhandle=0)
call gzopen(fhandle, 'w', 'zlibtest.dat', istat)
do ii=1,10
write(outline, '(3i10)') ii, ii**2, ii**3
call gzwrite(fhandle, outline)
end do
call gzclose(fhandle, istat)
end program