2017-10-12 4 views
0

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.

+0

Nun, ja, die Objekte in netcdf müssten auch mit Bildverlagerbarkeit erstellt werden, wenn Sie kein kompatibles netcdf verwenden., So – tim18

Antwort

0

Sie müssen die dynamische (.so) Version von NetCDF installieren, sei es aus Ihrem Repository oder indem Sie es selbst kompilieren. Wie tim18 in den Kommentaren sagt, muss es auch mit -fPIC kompiliert werden, und die .so-Version wird sein.

+0

danke, das hat funktioniert! –

Verwandte Themen