我有一些fortran程序无法在旧版本的gfortran中编译。我必须运行这个程序的多个实例,并使用另一个系统(一个集群系统),其中包含centos5_x64和gcc-4.1 !!
因此我必须建立新版本的gcc;我在我的主文件夹中构建了gcc-4.8.3和gcc-4.9.2。这些程序使用hdf5,因此后者也必须使用相同的编译器进行编译。我在删除了gfortran-4.8.3和4.8.9上的hdf5依赖后测试了fortran程序,并且它们构建并正确执行。我还用新的gcc / g ++(s)测试了简单的C / C ++程序(带有基本的i / o和算术);他们工作得很好。在编译hdf5库之前,我设置了以下环境变量:
PATH=<GCCPATH>:$PATH
LD_LIBRARY_PATH=<GCCLIB>
LD_RUN_PATH=<GCCLIB>
export PATH
export LD_LIBRARY_PATH
export LD_RUN_PATH
HDF5特定说明
4.3.7。指定其他库和标头 配置搜索标准位置(那些已知的位置) 系统编译器)用于包含文件和头文件。然而, 可以使用CPPFLAGS指定其他目录 和/或LDFLAGS变量:
$ CPPFLAGS=-I/home/robb/include \ LDFLAGS=-L/home/robb/lib \
LDFLAGS=-L<GCCLIB>
CPPFLAGS=-I<GCCINCLUDE>
然后配置为:
./configure --prefix=$HOME/HDF5 --enable-fortran
在制作期间我收到此错误:
/usr/lib/../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
对于两个版本的gcc都会发生这种情况,但是在标准位置安装的版本没有这种情况(这种情况发生在安装了gcc 4.4的另一个系统中)。通过一般搜索,我知道这个错误与缺少main()
有关,在这种情况下,必须传递-c
标志。但是,这个错误的所有例子都来自人们的个人脚本而不是图书馆。如果我遗失了什么,请告诉我。
目前无法升级系统操作系统。
答案 0 :(得分:0)
如comment by doqtor所示,我修改了Makefile
post configure。似乎没有设置CPPFLAGS和LDFLAGS。
在Makefile
中设置正确的CPPFLAGS和LDFLAGS后,编译成功。