Ich versuche, ein gemeinsames Objekt in Fortran zu erstellen, das die statische netcdf-Bibliothek verwendet. Das ultimative Ziel ist es, gemeinsam genutztes Objekt in R zu verwenden, aber ich denke, das Problem mit meiner Make-Datei beginnt, so konzentriere ich mich nur diese hier auf:Fortran kompilieren gemeinsames Objekt, das netcdf statische Bibliothek enthält
In meiner Make-Datei verwende ich die folgenden Flags
'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'
Ich glaube, es ist mir gelungen, alles gut zu verlinken (Sie sehen alle meine Objektdateien in der Fehlermeldung), aber im nächsten Schritt, wenn das gemeinsame Objekt erstellt wird, gibt es eine netcdf-Bibliothek spezifische Fehlermeldung:
'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'
Ich finde 'ähnliche' Probleme, aber Da ich mit der Terminologie nicht vertraut bin und dies mein allererster Versuch ist, ein gemeinsames Objekt zu erzeugen, kann ich ihren Anweisungen für mein Problem nicht folgen.
Nun, ja, die Objekte in netcdf müssten auch mit Bildverlagerbarkeit erstellt werden, wenn Sie kein kompatibles netcdf verwenden., So – tim18