使用gcc

时间:2015-05-26 18:20:20

标签: gcc ld hdf5

我有一些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标志。但是,这个错误的所有例子都来自人们的个人脚本而不是图书馆。如果我遗失了什么,请告诉我。

目前无法升级系统操作系统。

1 个答案:

答案 0 :(得分:0)

comment by doqtor所示,我修改了Makefile post configure。似乎没有设置CPPFLAGS和LDFLAGS。

Makefile中设置正确的CPPFLAGS和LDFLAGS后,编译成功。