作为更大程序的一部分,我需要在 Fortran 中求解一个非常简单的 ODE。为了避免自己实现求解器(并且在我做对之前肯定会引入一些错误),我想我会使用一个库,如果有的话 - 但我找不到任何有用的东西。
我查看了ODEPACK并找到了重新打包它的人,但原始发行版是作为非常多毛的源代码分发的,并且重新打包并没有构建在我的笔记本电脑上 - 它发出一堆关于转换INTEGER(8)
和REAL(8)
转换的警告在停下来INTEGER(4)
之前REAL(4)
gfortran -shared -o libodepack.so opkda1.o opkda2.o opkdmain.o
/usr/bin/ld: opkda1.o: relocation R_X86_64_32 against `dls001_' can not be used when making a shared object; recompile with -fPIC
opkda1.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [odepack.so] Error 1
所以我认为这是一个 32/64 位不兼容问题(我有一个 64 位处理器)。添加-fPIC
标志作为建议的错误消息没有帮助 - 无论如何我得到了相同的消息。
ODEPACK 或类似的东西是否可以以更易于安装的形式用于现代 Ubuntu 发行版?