Что вызывает эту ошибку ассемблера movabsq $symbol@GOTOFF с gfortran? неподдерживаемый модификатор символа при перемещении - PullRequest
1 голос
/ 16 января 2020

(я понимаю, что это не хорошо задокументированный вопрос, но, как я пишу ниже, я не знаю, какой информацией поделиться, я готов предоставить больше, поскольку она представляется полезной)

Я изменяю существующую коллекцию программ Fortran90 для обработки данных в жидкостной динамике (которая была написана не мной), но не по существу, а скорее в структурной части (например, используя общие файлы вместо копий и делая их независимо от его местоположения).

При компиляции я получаю следующую ошибку (компиляция на MacOS 10.15.2 с mpifort-> gfortran), с которой я не могу связать что-либо, поскольку я не знаю языка ассемблера:

gfortran -c -mcmodel=medium -fconvert=big-endian  -ffixed-line-length-140 -fno-align-commons -fbounds-check -Wall -cpp  -O3 -I/usr/local/include/ -L/usr/local/lib/ -lfftw3 -lm -Wl,-stack_size,0x10000000,-stack_addr,0xc0000000  calc_pressure.f90
/var/folders/l7/2v2vqp1n1xlcp_6_gg2y7k0r0000gn/T//ccz3q6Vo.s:1537:2: error: unsupported symbol modifier in relocation
        movabsq $270012416+_stermc.4115@GOTOFF, %rdx
        ^

Я могу скомпилировать таким образом, чтобы я не получил эту ошибку, но этого файла не происходит, меняя этот файл: я просто ссылаюсь на разные каталоги (т.е. разные симуляции).

Я не могу поделиться всем кодом, потому что это будет слишком много, и потому что он не открыт; но я готов предоставить более подробную информацию, насколько смогу.

минимальный воспроизводимый пример

Код ниже дает похожую ошибку: Undefined symbols for architecture x86_64: "_GLOBAL_OFFSET_TABLE_"

program main
  integer i 
  double precision, dimension(10) :: myarr
  double precision :: q

  q = stuff(i)
contains
  function stuff(j) result(y)
    integer :: j
    double precision, dimension(10) :: ar
    do j=1,10
      ar(j) = 1.0d2 * j
    end do
    write(*,*) ar
  end function
end program
...