我需要定义用Fortran 90编写的程序的退出代码,但是我在路上感到困惑。 我读取并创buildNetCDF文件,因此一些错误代码由NetCDF库提供。 为了将退出代码传递给Linux环境variables,我沿着代码使用exit(status)来终止程序。 但有些事情是错的,至less我不明白。 如果我从NetCDF得到一个错误代码,例如-49 (variables未find),那么程序结束时,检索到的值使用echo $? 是207 。 为什么? 如果我使用status=-1设置了一些特定的退出,那么$? 值是255 。 我已经阅读了那些依赖于shell的linux退出代码,其中一些是保留的,还有一些叫做系统错误。
我试图通过执行“make”命令来执行名为“gribextract”的程序。 我得到一个错误 gfortran -o hrldas_extract_point -fconvert=big-endian -g -I. \ hrldas_extract_point.o arguments_module.o module_date_utilities.o llxy_generic.o lccone.o \ -L/home/Admin/Workstation/NETCDF413/lib -lnetcdff -lnetcdf arguments_module.o: In function `initialize': /home/Admin/Workstation/Hrldas/Utility_programs/arguments_module.f90:400: undefined reference to `iargc_' collect2: error: ld returned 1 exit status make: *** [hrldas_extract_point] Error 1 如何解决这个错误。 以下是我的用户构build选项 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ COMPILERF90 = gfortran FREESOURCE = -ffree-form -ffree-line-length-none -cpp F90FLAGS = -fconvert=big-endian -g MODFLAG […]
我相信我的问题是类似于这个职位: Linux:无法findlgfortran虽然gfortran安装 。 但是,由于build议的答案并不能解决我的问题,除了再次提出这个问题之外,别无select,因为像我这样一个绝望的Linux新手。 这是问题。 我安装了GNU fortran编译器4.8.4,并可以在terminal中find它 $ which gfortran-4.8 /usr/bin/gfortran-4.8 和 $ locate gfortran /usr/bin/gfortran-4.7 /usr/bin/gfortran-4.8 /usr/bin/x86_64-linux-gnu-gfortran-4.7 /usr/bin/x86_64-linux-gnu-gfortran-4.8 /usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortran.a /usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortran.so /usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortran.spec /usr/lib/gcc/x86_64-linux-gnu/4.7/libgfortranbegin.a /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.so /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.spec /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortranbegin.a /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0 /usr/share/doc/gfortran-4.7 /usr/share/doc/gfortran-4.8 /usr/share/doc/libgfortran-4.7-dev /usr/share/doc/libgfortran-4.8-dev /usr/share/doc/libgfortran3 /usr/share/man/man1/gfortran-4.7.1.gz /usr/share/man/man1/gfortran-4.8.1.gz /usr/share/man/man1/x86_64-linux-gnu-gfortran-4.7.1.gz /usr/share/man/man1/x86_64-linux-gnu-gfortran-4.8.1.gz /var/cache/apt/archives/gfortran-4.7_4.7.3-12ubuntu1_amd64.deb /var/cache/apt/archives/gfortran-4.8_4.8.4-2ubuntu1~14.04_amd64.deb /var/cache/apt/archives/libgfortran-4.7-dev_4.7.3-12ubuntu1_amd64.deb /var/cache/apt/archives/libgfortran-4.8-dev_4.8.4-2ubuntu1~14.04_amd64.deb /var/cache/apt/archives/libgfortran3_4.8.4-2ubuntu1~14.04_amd64.deb /var/lib/dpkg/info/gfortran-4.7.list /var/lib/dpkg/info/gfortran-4.7.md5sums /var/lib/dpkg/info/gfortran-4.8.list /var/lib/dpkg/info/gfortran-4.8.md5sums /var/lib/dpkg/info/libgfortran-4.7-dev:amd64.list /var/lib/dpkg/info/libgfortran-4.7-dev:amd64.md5sums /var/lib/dpkg/info/libgfortran-4.8-dev:amd64.list /var/lib/dpkg/info/libgfortran-4.8-dev:amd64.md5sums /var/lib/dpkg/info/libgfortran3:amd64.list /var/lib/dpkg/info/libgfortran3:amd64.md5sums /var/lib/dpkg/info/libgfortran3:amd64.postinst /var/lib/dpkg/info/libgfortran3:amd64.postrm […]
我有一个问题,将lapack链接到Fortran示例程序。 这是程序example.f95 Program LinearEquations ! solving the matrix equation A*x=b using LAPACK Implicit none ! declarations double precision :: A(3,3), b(3) integer :: i, pivot(3), ok ! matrix A A(1,:)=(/3, 1, 3/) A(2,:)=(/1, 5, 9/) A(3,:)=(/2, 6, 5/) ! vector b b(:)=(/-1, 3, -3/) !b(:)=(/2, 2, 9/) ! find the solution using the LAPACK routine […]
我试图在ssh上运行一个适用于小网格的代码,但是由于新的网格更大,我使用ifort命令来编译它,ifort -mcmodel = medium -i-dynamic -otest.out * .f 它符合但是当我运行它的输出是:杀死 我知道问题是从记忆中,有谁知道是否有任何方法来运行它? 我怎么知道代码中的内存导致内存问题? 谢谢沙迪
我有一个fortran程序。 子程序如下:程序执行1434行后出现分段错误,打印如下: i: 115 256 2 Segmentation fault (core dumped) 参数是n1 = 258,n2 = 258,n3 = 258。 NR = 46480。 为什么发生分段错误? 75 double precision u(nr),v(nv),r(nr),a(0:3),c(0:3) 76 common /noautom/ u,v,r …… 196 call zero3(u,n1,n2,n3) …… 1418 subroutine zero3(z,n1,n2,n3) 1419 1420 c——————————————————————— 1421 c——————————————————————— 1422 1423 implicit none 1424 1425 1426 integer n1, n2, n3 1427 double […]
对于大量现有的(Fortran 90)代码尝试添加一些基本的unit testing是一个明智的方法,这些代码是仅在locking的系统上开发的,没有机会安装任何第三方框架。 我几乎局限于标准的Linux工具。 目前,使用非常有限的一组testing来在完整的系统级testing代码库,但是这非常耗时(需要多天的时间),所以在开发过程中很less使用 理想的情况是希望能够针对关键系统逐步添加目标testing,而不是一次尝试完全彻底地检查整个代码库。 以下面的示例模块为例,假定在Fortran中的Assert中详细描述了一个assert-typemacros的实现 MODULE foo CONTAINS FUNCTION bar() RESULT (some_output) INTEGER :: some_output some_output = 0 END FUNCTION bar END MODULE foo 有几种可能的方法值得思考,但是实施这些方法可能存在一些技术上的或挑战性的挑战: 为每个模块分配testing模块,如下所示,并有一个主testing运行器来调用每个模块中的每个function MODULE foo_test CONTAINS SUBROUTINE bar_test() ! …. END SUBROUTINE bar_test() END MODULE foo_test 与上面类似的方法,但每个testing都有单独的可执行文件。 显而易见的好处是,单个故障不会终止所有的testing,但可能难以pipe理大量的testing可执行文件,并且可能需要大量额外的代码。 使用预处理器在每个模块中包含包含testing的主函数,例如,在具有C / C ++风格macros的 gfortran Fortran 90中(例如#define SUBNAME(x)s ## x)并使用构build脚本自动testingmain的存储在主代码文件中的预处理分隔符之间。 我曾尝试使用一些现有的Fortran框架(如在“Fortran中的unit testing框架为什么依赖于Ruby而不是Fortran本身?”中所述 […]
我试图编译一些由别人开发的完整的Fortran代码。 生成文件引用CC,F77和F90。 我们的服务器上没有F90,但是如果事实certificate它确实需要的话,我可能会问这个问题。 无论如何,我认为我已经设置了适当的环境variables(我所做的是取消注释正确的行),所以我cp'd文件生成文件,键入make,并得到以下错误。 make[1]: Entering directory `/imageseer/Scripts/PGE03_V5.2.6/PGE03/MOD_PR35' f77 -c -n32 -fullwarn -u -bytereclen -extend_source -woff 2271,2272,2274 -O2 -c -u -bytereclen -col120 -woff 2271,2272,2274 -I -I -I -I -I/shared_src/atmos_src/src_UW -I/shared_src/atmos_src/src_L2 Antarctic_day.f f77: 2271,2272,2274: No such file or directory f77: 2271,2272,2274: No such file or directory f77: unrecognized option `-n32' f77: unrecognized option `-woff' f77: unrecognized […]
如果我正确理解了手册,应该创build一个文件夹中包含fortran模块的文件,比如说/path/mods/test_mod.f90,例如: module test_mod implicit none save contains function prod(a,b) result(c) real :: a,b,c c=a*b return end function end module 并编译它像: gfortran -c test_mod.f90 并创build另一个文件,说/path/bins/test_prog.f90,即: program test_prog use test_mod real :: x,y,z x=4e0 y=5e0 z=prod(x,y) print*,z end 并像这样编译它: gfortran -I/path/mods -o test_prog test_prog.f90 但由于某种原因,我得到一个链接器错误在mac上说: Undefined symbols for architecture x86_64: "___test_mod_MOD_prod", referenced from: _MAIN__ in ccz1rsxY.o ld: […]
我几天前开始学习FORTRAN,当试图“取消”一个指针时,我偶然发现了一个错误。 该代码编译没有任何缺陷,但我这是它inputvariables后显示。 我也知道这个问题是由'nullify'命令引起的,因为如果我评论这行,程序运行时没有任何错误。 码: program demo1 implicit none TYPE :: Neuron real :: val = 0 real :: w1 = 1, w2 = 1 TYPE(Neuron), pointer :: vertex1, vertex2 end TYPE Neuron TYPE :: container TYPE(Neuron), pointer :: obj end TYPE container integer :: i=0, n_inputs TYPE(Neuron), target :: output_vertex TYPE(Neuron), pointer :: temp TYPE(container), […]