R中的共享对象
我想从R运行FORTRAN子程序。我读到,我需要一个共享对象(.so文件)来运行子程序。 为了创建共享对象,我成功地编译了FORTRAN子例程。 但是在创建共享对象时,它给出了以下错误R中的共享对象,r,fortran,shared-objects,R,Fortran,Shared Objects,我想从R运行FORTRAN子程序。我读到,我需要一个共享对象(.so文件)来运行子程序。 为了创建共享对象,我成功地编译了FORTRAN子例程。 但是在创建共享对象时,它给出了以下错误 /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
/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
给出的命令是gfortran-shared-o temain.so*.o
我该怎么办?
提前感谢如错误消息所示,您需要
-fPIC
请参阅编写R扩展手册,并使用R CMD COMPILE myfile.f
解决了这个问题(有很多警告)。它之前给出了错误,因为我没有删除之前创建的.o文件。显然,您必须删除并重建该文件。这就是重点:没有重新定位信息的对象代码。