2016-06-09 5 views
-1

Ich möchte eine FORTRAN-Unterroutine von R ausführen. Ich habe gelesen, dass ich ein gemeinsames Objekt (.so-Datei) zum Ausführen der Subroutine benötigen. Zum Erstellen des gemeinsamen Objekts habe ich erfolgreich das FORTRAN-Unterprogramm kompiliert. Aber wenn das Objekt geteilt Erzeugen der gab es die folgenden FehlerGemeinsames Objekt in R

/usr/bin/ld: temain.o: relocation R_X86_64_32 against `.rodata' can not be 
used when making a shared object; 
recompile with -fPIC 
temain.o: could not read symbols: Bad value 
collect2: error: ld returned 1 exit status 

den Befehl gegeben war gfortran -shared -o temain.so *.o

Was kann ich tun? Vielen Dank im Voraus

Antwort

0

Sie benötigen -fPIC wie die Fehlermeldung sagt.

Siehe das Handbuch zum Schreiben von R-Erweiterungen und verwenden Sie R CMD COMPILE myfile.f.

+0

Es gibt den gleichen Fehler –

+0

Das löste es (mit vielen Warnungen). Es gab zuvor einen Fehler, weil ich die zuvor erstellte .o-Datei nicht löschte. –

+0

Sie _obviously_ müssen entfernen und neu erstellen. Das war der springende Punkt: Objektcode ohne Umzugsinformationen. –