我正在尝试在debian squeeze上安装Poststat。 http://poststat.projects.postgresql.org 这个项目看起来不那么古老(2008),但我在安装它时遇到了一些困难。虽然它似乎是一个非常有趣的项目,谷歌是空的。我会在这里总结我的所作所为(postgres 8.4已安装):
apt-get install fort77 postgresql-server-dev-8.4 libblas-dev liblapack-dev gfortran
首先,正如在官方网站上所说,解压缩tar.gz并进入目录f77stat和'make'。
然后如果你安装了libpq-dev,在debian上挤压它安装它还拥有pg_config在/ usr / bin / wich报告虚假信息。 (见http://postgresql.1045698.n5.nabble.com/Bug-report-Wrong-version-in-pg-config-td2123792.html) 一个解决方案:
mv /usr/bin/pg_config pg_config_bak
ln -s /usr/lib/postgresql/8.4/bin/pg_config pg_config
这很重要,因为Poststat的makefile正在使用pg_config检索一些信息。
然后在主Makefile中有一行:
-lblas -llapack -lg2c
为blas和lapack安装这些包:
apt-get install libatlas-base-dev libatlas-dev libatlas-doc libatlas3gf-base
现在我的问题是关于g2c。根据谷歌,g2c已经过时,所以我编辑了Makefile并用-lgfortrant替换-lg2c
最后一步: 编译并导入我的数据库中的新statitics函数。
make && sudo make install
psql -f poststat.sql <database>
不幸的是,
psql:poststat.sql:18: ERROR: unable to load the library
« /usr/lib/postgresql/8.4/lib/poststat.so » : /usr/lib/postgresql/8.4/lib/poststat.so:
undefined symbol: s_stop
有什么想法? Fortran不是我的世界,而且debian中的包裹似乎有很多变化。我从-lg2c切换到-lgfortrant可能是错误的。事实上,删除这个包括最后会产生相同的错误。
答案 0 :(得分:1)
libg2c属于g77(http://stackoverflow.com/questions/2406581/what-is-libg2c-library),它已过时且多年未得到支持。切换到更新的编译器不仅仅涉及替换此库。您还需要替换编译器,例如gfortran。您可能需要更改gfortran的默认编译器选项才能编译FORTRAN 77代码。我使用:-O2 -ffixed-form -ffixed-line-length-none。如果使用gfortran作为链接器,则不需要显式包含fortran运行时库。
答案 1 :(得分:0)
通过-lf2c更改-lg2c
最后添加到poststat.c
int MAIN__(){
return (0);
}