标签: gfortran

您为GFORTRAN调试器/编译器设置了哪些标志来捕获错误的代码?

我想我不会在任何教科书中找到它,因为回答这需要经验.我目前正处于测试/验证我的代码/狩猎漏洞以使其进入生产状态的阶段,任何错误都会导致许多人遭受痛苦,例如黑暗面.

  • 在为Fortran编译程序以进行调试时,您设置了哪种标志?

  • 你为生产系统设置了什么样的标志?

  • 在部署之前你做了什么?

生产版本ifort用作编译器,但我用我的测试gfortran.我做错了吗?

deployment debugging fortran gfortran fortran90

38
推荐指数
2
解决办法
3万
查看次数

构建R包获取错误"ld:找不到-lgfortran"

我正在尝试安装包lars.Ubuntu 11.04 Natty 64位.从建筑物我得到:

* 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â
Run Code Online (Sandbox Code Playgroud)

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.我需要解决这个问题?

ubuntu r gfortran

37
推荐指数
5
解决办法
2万
查看次数

对"omp_get_max_threads_"的未定义引用

我在尝试编译项目时遇到以下错误:( fortran,使用gfortran)

未定义的引用`omp_get_max_threads_'

未定义的引用`omp_get_thread_num_'

问题是,我的GCC版本是4.4.3,这是为了支持OpenMP.

gcc openmp gfortran

37
推荐指数
2
解决办法
7万
查看次数

在Fortran中放置`implicit none'

我是否需要将implicit none每个功能和子程序放入其中?

或者它是否足以将它放在包含这些函数和子例程的模块的开头?

或者它是否足以将它放在使用这些模块的程序的开头?

从观察其他人的工作代码,implicit none包含在所有这些地方.我不确定这是否是冗余的,因为implicit none从子程序中删除仍然编译并产生相同的输出.

顺便说一句,我正在使用gfortran fortran 90.

fortran gfortran fortran90

28
推荐指数
3
解决办法
1万
查看次数

无法通过自制软件安装gfortran

当我试图安装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
Run Code Online (Sandbox Code Playgroud)

我的问题是如何用自制软件或端口安装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
Run Code Online (Sandbox Code Playgroud)

homebrew fortran gfortran fortran90

19
推荐指数
1
解决办法
2万
查看次数

指定gfortran应该查找模块的目录

我目前基于模块(例如foo依赖于模块的主程序bar)编译程序如下:

gfortran -c bar.f90
gfortran -o foo.exe foo.f90 bar.o
Run Code Online (Sandbox Code Playgroud)

这在当foo.f90bar.f90位于同一目录中时工作正常.如何指定一个目录,gfortran应该寻找bar.o当我打电话use barfoo.f90?(即我不想指定编译器应该bar.o专门链接,我只是想让它去找它.)

fortran module gfortran

18
推荐指数
2
解决办法
2万
查看次数

如何将可分配数组传递给Fortran中的子例程

以下代码返回分段错误,因为我尝试传递的可分配数组未被正确识别(大小返回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
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
Run Code Online (Sandbox Code Playgroud)

arrays fortran gfortran fortran90

17
推荐指数
2
解决办法
4万
查看次数

停止具有非零退出状态的fortran程序

我正在修改一些我没有写过的Fortran代码,而且我自己没有很多的经验.我刚刚发现了一些情况,其中一些格式错误的输入被默默地忽略,并且想要更改该代码以做更合适的事情.如果这是C,那么我会做类似的事情

fprintf(stderr, "There was an error of kind foo");
exit(EXIT_FAILURE);
Run Code Online (Sandbox Code Playgroud)

但在fortran中,我知道如何做的最好看起来像

write(*,*) 'There was an error of kind foo'
stop
Run Code Online (Sandbox Code Playgroud)

缺乏输出流(次要问题)和退出状态(主要问题)的选择.

如何终止具有非零退出状态的fortran程序?

如果这是依赖于编译器的,那么与gfortran一起使用的解决方案会很好.

fortran exit-code exit gfortran

17
推荐指数
2
解决办法
2万
查看次数

gfortran for dummies:mcmodel = medium做了什么?

我有一些代码在编译时给我重定位错误,下面是一个说明问题的示例:

  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
Run Code Online (Sandbox Code Playgroud)

编译这个gfortran -O3 -g -o test test.f,我得到以下错误:

relocation truncated to fit: R_X86_64_PC32 against symbol `baz_' defined in COMMON section in …
Run Code Online (Sandbox Code Playgroud)

fortran memory-management x86-64 gfortran

16
推荐指数
2
解决办法
2万
查看次数

在配备 Apple M1 芯片的 MacBook 上安装 gfortran 以在 R 中使用

我使用的是配备 Apple M1 芯片、运行 macOS 11.6 Big Sur 的 MacBook Air。我正在使用 R 4.1.1。我安装了适用于 Apple M1 的 Xtools 和 gfortran

\n
markwhite@marks-air ~ % which xcode-select\n/usr/bin/xcode-select\nmarkwhite@marks-air ~ % which gfortran\n/usr/local/bin/gfortran\n
Run Code Online (Sandbox Code Playgroud)\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 …
Run Code Online (Sandbox Code Playgroud)

macos r gfortran apple-m1

16
推荐指数
3
解决办法
2万
查看次数