我想我不会在任何教科书中找到它,因为回答这需要经验.我目前正处于测试/验证我的代码/狩猎漏洞以使其进入生产状态的阶段,任何错误都会导致许多人遭受痛苦,例如黑暗面.
在为Fortran编译程序以进行调试时,您设置了哪种标志?
你为生产系统设置了什么样的标志?
在部署之前你做了什么?
生产版本ifort用作编译器,但我用我的测试gfortran.我做错了吗?
我正在尝试安装包lars.Ubuntu 11.04 Natty 64位.从建筑物我得到:
Run Code Online (Sandbox Code Playgroud)* installing *source* package âlarsâ ... ** libs gfortran -fpic -O3 -pipe -g -c delcol.f -o delcol.o gcc -shared -o lars.so delcol.o -lgfortran -lm -L/usr/lib64/R/lib -lR /usr/bin/ld: cannot find -lgfortran collect2: ld returned 1 exit status make: *** [lars.so] Error 1 ERROR: compilation failed for package âlarsâ
gfortran已安装,当我跑步时,gfortran --version我得到了
gfortran --version GNU Fortran(Ubuntu/Linaro 4.5.2-8ubuntu4)4.5.2
sudo ldconfig -v 给出了错误
/sbin/ldconfig.real:无法统计/usr/lib/libgfortran.so:没有这样的文件或目录
我已经删除并重新安装了gfortran.我需要解决这个问题?
我在尝试编译项目时遇到以下错误:( fortran,使用gfortran)
未定义的引用`omp_get_max_threads_'
未定义的引用`omp_get_thread_num_'
问题是,我的GCC版本是4.4.3,这是为了支持OpenMP.
我是否需要将implicit none每个功能和子程序放入其中?
或者它是否足以将它放在包含这些函数和子例程的模块的开头?
或者它是否足以将它放在使用这些模块的程序的开头?
从观察其他人的工作代码,implicit none包含在所有这些地方.我不确定这是否是冗余的,因为implicit none从子程序中删除仍然编译并产生相同的输出.
顺便说一句,我正在使用gfortran fortran 90.
当我试图安装gfortran时,我收到了此消息.
~$ brew install gfortran
Error: No available formula for gfortran
GNU Fortran is now provided as part of GCC, and can be installed with:
  brew install gcc
我的问题是如何用自制软件或端口安装gfortran?
要么
如果现在GNU Fortran是GCC的一部分我如何使用gcc编译fortran代码?
我不确定我是否误解了一些我记得上次我仍然可以使用gfortran编译我的代码但现在它不起作用的东西.
更多的信息:
当我使用命令时,brew list我仍然看到gfortran在那里,但不能使用它.
更多信息(最新):
好的,现在我可以使用gfortran命令,但另一个问题来了
~$ gfortran-4.9 hello.f
dyld: Library not loaded: /usr/local/lib/libcloog-isl.4.dylib
  Referenced from: /usr/local/Cellar/gcc/4.9.2/libexec/gcc/x86_64-apple-darwin14.0.0/4.9.2/f951
  Reason: image not found
gfortran-4.9: internal compiler error: Trace/BPT trap: 5 (program f951)
Abort trap: 6
我目前基于模块(例如foo依赖于模块的主程序bar)编译程序如下:
gfortran -c bar.f90
gfortran -o foo.exe foo.f90 bar.o
这在当foo.f90且bar.f90位于同一目录中时工作正常.如何指定一个目录,gfortran应该寻找bar.o当我打电话use bar的foo.f90?(即我不想指定编译器应该bar.o专门链接,我只是想让它去找它.)
以下代码返回分段错误,因为我尝试传递的可分配数组未被正确识别(大小返回1,应该是3).在这个页面(http://www.eng-tips.com/viewthread.cfm?qid=170599)中,一个类似的例子似乎表明它应该在F95中正常工作; 我的代码文件有.F90扩展名,但我尝试将其更改为F95,我正在使用gfortran进行编译.
我的猜测是问题应该是我将可分配数组传递给子程序的方式; 我究竟做错了什么?
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
 PROGRAM test
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
 IMPLICIT NONE
 DOUBLE PRECISION,ALLOCATABLE :: Array(:,:)
 INTEGER                      :: iii,jjj
 ALLOCATE(Array(3,3))
 DO iii=1,3
 DO jjj=1,3
    Array(iii,jjj)=iii+jjj
    PRINT*,Array(iii,jjj)
 ENDDO
 ENDDO
 CALL Subtest(Array)
 END PROGRAM
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
 SUBROUTINE Subtest(Array)
 DOUBLE PRECISION,ALLOCATABLE,INTENT(IN) :: Array(:,:)
 INTEGER                                 :: iii,jjj
 PRINT*,SIZE(Array,1),SIZE(Array,2)
 DO iii=1,SIZE(Array,1)
 DO jjj=1,SIZE(Array,2)
    PRINT*,Array(iii,jjj)
 ENDDO
 ENDDO
 END SUBROUTINE
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
我正在修改一些我没有写过的Fortran代码,而且我自己没有很多的经验.我刚刚发现了一些情况,其中一些格式错误的输入被默默地忽略,并且想要更改该代码以做更合适的事情.如果这是C,那么我会做类似的事情
fprintf(stderr, "There was an error of kind foo");
exit(EXIT_FAILURE);
但在fortran中,我知道如何做的最好看起来像
write(*,*) 'There was an error of kind foo'
stop
缺乏输出流(次要问题)和退出状态(主要问题)的选择.
如何终止具有非零退出状态的fortran程序?
如果这是依赖于编译器的,那么与gfortran一起使用的解决方案会很好.
我有一些代码在编译时给我重定位错误,下面是一个说明问题的示例:
  program main
  common/baz/a,b,c
  real a,b,c
  b = 0.0
  call foo()
  print*, b
  end
  subroutine foo()
  common/baz/a,b,c
  real a,b,c
  integer, parameter :: nx = 450
  integer, parameter :: ny = 144
  integer, parameter :: nz = 144
  integer, parameter :: nf = 23*3
  real :: bar(nf,nx*ny*nz)
  !real, allocatable,dimension(:,:) :: bar
  !allocate(bar(nf,nx*ny*nz))
  bar = 1.0
  b = bar(12,32*138*42)
  return
  end
编译这个gfortran -O3 -g -o test test.f,我得到以下错误:
relocation truncated to fit: R_X86_64_PC32 against symbol `baz_' defined in COMMON section in …我使用的是配备 Apple M1 芯片、运行 macOS 11.6 Big Sur 的 MacBook Air。我正在使用 R 4.1.1。我安装了适用于 Apple M1 的 Xtools 和 gfortran:
\nmarkwhite@marks-air ~ % which xcode-select\n/usr/bin/xcode-select\nmarkwhite@marks-air ~ % which gfortran\n/usr/local/bin/gfortran\n我能够成功安装并运行 R\xe2\x80\x94,但是安装一些软件包给我带来了麻烦:
\n> install.packages("mvtnorm")\n\n  There is a binary version available but the source version is later:\n        binary source needs_compilation\nmvtnorm  1.1-2  1.1-3              TRUE\n\nDo you want to install from sources the package which needs compilation? (Yes/no/cancel) Yes\ninstalling the source package \xe2\x80\x98mvtnorm\xe2\x80\x99\n\ntrying URL \'https://cran.rstudio.com/src/contrib/mvtnorm_1.1-3.tar.gz\'\nContent type \'application/x-gzip\' length 166421 bytes (162 …