XiZi's Blog

NetCDF Windows 多线程调试(MT,MTD)编译的动态库。

  1. 编译环境为:

      Windows Server 2008 R2

      Visual Studio 2012 Update3

      Cmake 2.8.11

      IntelMPI 4.1.1.036

      Fortran Intel Fortran Version 13.1.3.198 Build 20130607

  2. 主要分为NetCDF4_Enabled ON 和 OFF 版本
    • OFF的版本比较简单,去掉Enable_CDF4和Use_NetCDF4即可。

    • ON的版本比较麻烦,对NetCDF的代码需要小的修改。

      基于intel mpi的并行环境编译

  3. 最后给出下载链接

    http://pan.baidu.com/share/link?shareid=502022239&uk=1143913763

Build NetCDF For C,C++,Fortran interface with intel comilers

由于版本的变化,导致了NetCDF的一些变化。因此,此过程仅适用于NetCDF的版本为4.1.3(估计适用于3.6.3-4.1.3),但不适用于后来的4.2版本。

1、解压源程序包,修改configure文件

--- netcdf-4.1.3/configure      2011-07-01 07:22:45.000000000 +0800
+++ netcdf-4.1.3n/configure     2013-04-19 05:39:43.029982048 +0800
@@ -24472,7 +24472,7 @@
               call sub()
               end
 EOF
-           doit='$FC -c ${FFLAGS} conftest.f'
+           doit='$FC -c conftest.f'
            if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$doit\""; } >&5
   (eval $doit) 2>&5
   ac_status=$?

2、configure and install

./configure --disable-netcdf-4 --disable-dap --prefix=/opt/netcdf \
CPP='icc -E' CXXCPP='icpc -E' CC=icc CXX=icpc FC=ifort F90=ifort F77=ifort \
CFLAGS="-fast -w" CXXFLAGS="-fast -w" FFLAGS="-fast -w" LD=ifort \
LFLAGS="-fast -w" AR=xiar CPPFLAGS='-DNDEBUG -DINTEL_COMPILER' 
make install

PS: 如果在Centos下configure失败,请安装依赖库。

yum install glibc-devel glibc-headers glibc-static

Fortran Makefile in Linux

 

FC = ifort
FFLAGS = -O2

ALL_SRCS = $(wildcard *.f *.for *.f90)
MODSRCS = $(filter mod_%,$(ALL_SRCS))
#MODSRCS = zmod.f
MODS := $(addsuffix .o, $(basename $(MODSRCS)))

SRCS = $(filter-out mod_%,$(ALL_SRCS))
#SRCS = sub1.f \
main.f90

OBJS := $(addsuffix .o, $(basename $(SRCS)))

TARGET = Program_N
#all:
#       @echo "ALL_SRCS=$(ALL_SRCS)"
#       @echo "OBJS=$(OBJS)"
#       @echo "MODS=$(MODS)"

$(TARGET): $(OBJS)
        $(FC) $(FFLAGS) -o $@ $(MODS) $(OBJS)

clean:
        rm -f $(TARGET) *.o *.mod

$(OBJS): $(MODS)

.SUFFIXES: .o .f .for .f90

.f.o:
        $(FC) $(FFLAGS) -c $<
.for.o:
        $(FC) $(FFLAGS) -c $<
.f90.o:
        $(FC) $(FFLAGS) -c $<




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee