J'essaie de créer un objet partagé dans fortran, qui utilise la bibliothèque statique netcdf. Le but ultime est d'utiliser cet objet partagé dans R, mais je pense que le problème commence avec mon makefile, donc je suis de se concentrer uniquement sur ce ici:Fortran compile l'objet partagé qui inclut la bibliothèque statique netcdf
Dans mon makefile j'utilise les drapeaux suivants
'F90 = ifort
FFLAGS = -O3 -fPIC -r8 # double-precision now run in Fortran , -fpic
for creating shared object file
LDFLAGS = -lnetcdff -lnetcdf -shared #-shared, for creating a shared
object file'
Je pense que j'ai réussi à lier tout bien, (vous voyez tous mes fichiers objets dans le message d'erreur), mais à l'étape suivante, lors de la création de l'objet partagé, il y a un message d'erreur spécifique à netcdf-library:
'ifort -O3 -fPIC -r8 -o HX.so HX.o HANDLE_ERR.o GET_CLM.o INTEGRATE.o
CLIMATE.o STATE.o PARAMETERS.o CONTROL.o HYDRO.o DYNAMICS.o CARBON.o
RINGS.o INIT.o SET_PARAMS.o -lnetcdff -lnetcdf -shared
ld: /usr/local/Cluster-Apps/netcdf/4.1.3/lib/libnetcdff.a(netcdf4.o):
relocation R_X86_64_32 against `.bss' can not be used when making a
shared object; recompile with -fPIC
/usr/local/Cluster-Apps/netcdf/4.1.3/lib/libnetcdff.a: could not read
symbols: Bad value
make: *** [HX.so] Error 1'
Je trouve des problèmes «similaires», mais comme je ne suis pas familier avec la terminologie et ceci est mon premier essai dans la génération d'un objet partagé, je ne peux pas suivre leurs instructions pour mon problème.
Eh bien, oui, les objets dans netcdf devraient également être construits avec la relocalisation de pic, si vous n'utilisez pas un netcdf compatible., Alors – tim18