компилятор gfortran выдает ошибку сегментации - PullRequest
0 голосов
/ 09 мая 2020

У меня возникли проблемы с запуском кода fortran, поэтому я попробовал пример кода здесь: https://gcc.gnu.org/onlinedocs/gcc-8.4.0/gfortran/ICHAR.html

program read_val
  integer value
  character(len=10) string, string2
  string = '154'

  ! Convert a string to a numeric value
  read (string,'(I10)') value
  print *, value

  ! Convert a value to a formatted string
  write (string2,'(I10)') value
  print *, string2
end program read_val

Я сделал

gfortran -o hello3 hello3.f -g3 -fcheck = all -Wall -fbacktrace

И это не дало мне ни предупреждений, ни ошибок. Однако

. / Hello3

не удалось с

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x103eab35c
#1  0x103eaa6f3
#2  0x7fff7376cb5c
#3  0x103fef340
#4  0x103fefd2d
#5  0x103fed78f
#6  0x103ea5cca
#7  0x103ea5e96
Segmentation fault: 11

Мне почему-то кажется, что мой компилятор gfortran не работает должным образом. Я не знаком с ОС Ma c и чувствую, что Xcode / Anaconda / et c испортил мою систему.

Я использую GNU Fortran (Homebrew G CC 9.3.0_1) 9.3 .0, MacOS Mojave 10.14.6.

gfortran путь: / usr / local / bin / gfortran В настоящее время мой gfortran от 'brew install g cc'. Я также попробовал загрузить вручную с https://github.com/fxcoudert/gfortran-for-macOS/releases, но это тоже не сработало.

1 Ответ

3 голосов
/ 09 мая 2020

Насколько я могу судить, с кодом все в порядке, он соответствует и правильно работает в моей системе

ian@eris:~/work/stack$ cat busted.f90 
program read_val
  integer value
  character(len=10) string, string2
  string = '154'

  ! Convert a string to a numeric value
  read (string,'(I10)') value
  print *, value

  ! Convert a value to a formatted string
  write (string2,'(I10)') value
  print *, string2
end program read_val
ian@eris:~/work/stack$ gfortran -std=f2008 -Wall -Wextra -fcheck=all -g busted.f90 
ian@eris:~/work/stack$ ./a.out
         154
        154

Насколько я понимаю, ваша инстилляция gfortran не работает. Но всегда используйте Implicit None

...