(я понимаю, что это не хорошо задокументированный вопрос, но, как я пишу ниже, я не знаю, какой информацией поделиться, я готов предоставить больше, поскольку она представляется полезной)
Я изменяю существующую коллекцию программ 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