爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13708|回复: 16

wrf3.5版本安装编译WPS的时候没法生成ungrib.exe(已解决)

[复制链接]
发表于 2016-4-10 20:41:41 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 一颗梅子在南京 于 2016-4-15 16:28 编辑

情况是这个样子的:本人用的是CENTOS7系统,编译器用的是gfortran,netcdf用的是4.1.3版本的,然后也安装了zlib jasper libpng 的库文件,也配置了环境,考虑到要用grib2格式的数据,所以安装WRF3.5的时候做了修改:
1.根据这个帖子http://bbs.06climate.com/forum.p ... 19216&extra=&page=1,修改了WRFV3/arch目录下的Config_new.pl文件:
  /grib2来查找如下位置:
  将$I_really_want_to_output_grib2_from_WRF = "FALSE" ;

  改为:
$I_really_want_to_output_grib2_from_WRF = "TRUE" ;
然后./configue 选择40 gfortran gcc serial

2.由于出现如下提示:

************************** W A R N I N G ************************************

There are some Fortran 20003 features in WRF that your compiler does not recognize
The IEEE signaling call has been removed. That may not be enough.

*****************************************************************************

参照:http://bbs.06climate.com/forum.php?mod=viewthread&tid=19216&extra=&page=1

修改
;configure.wps对应FORMAT_FIXED/FORMAT_FREE改为如下两行:
FORMAT_FIXED    =       -ffixed-form -cpp
FORMAT_FREE     =       -ffree-form -ffree-line-length-none -cpp
然后./compile em_real>&log.compile后也能生成
wrf.exe ndown.exe real.exe nup.exe tc.exe,且在log.compile文件中没有查到错误


3.然后安装WPS
  ./configure 选1  gfortran +serial
根据这个http://bbs.06climate.com/forum.p ... 3355&extra=page%3D1帖子,修改了一下configue.wps,
#### Architecture specific settings ####

COMPRESSION_LIBS        =  -L/usr/local/wpslib\
                           -ljasper -lpng12 -lpng -lz

COMPRESSION_INC         =  -I/usr/local/wpsinclude

另外将-C去掉:
CPP                 = /usr/bin/cpp -C -P -traditional

然后在./compile 只能生成metgrid.exe和geogrid.exe,无法生成ungrib.exe
查看编译日志提示的错误是:
enc_png.o: 没有那个文件或目录
dec_png.o: 没有那个文件或目录

/bin/rm -f ungrib.exe
if [ -z  ] ; then \
                  gfortran -o ungrib.exe  misc_definitions_module.o debug_cio.o module_debug.o module_stringutil.o table.o module_datarray.o gridinfo.o new_storage.o filelist.o ungrib.o output.o rrpr.o rd_grib1.o file_delete.o datint.o rd_grib2.o  \
                        -L./ngl -lw3 -lg2_4 \
                        -L/usr/local/jasper/lib -ljasper -lpng -lz \
                        -L. -lpgu ; \
                        else \
                  gfortran -o ungrib.exe  misc_definitions_module.o debug_cio.o module_debug.o module_stringutil.o table.o module_datarray.o gridinfo.o new_storage.o filelist.o ungrib.o output.o rrpr.o rd_grib1.o file_delete.o datint.o rd_grib2.o  \
                        ./ngl/w3/libw3.a ./ngl/g2/libg2_4.a \
                        -L/usr/local/jasper/lib -ljasper -lpng -lz \
                        libpgu.a ; \
                        fi
/usr/bin/ld: cannot find -lg2_4
/usr/bin/ld: cannot find -lpng
collect2: 错误:ld 返回 1
make[1]: [ungrib.exe] 错误 1 (忽略)


然后查看了论坛了遇到相应错误的,http://bbs.06climate.com/forum.php?mod=viewthread&tid=38231,但是没有详细的解决办法:

我修改了WRFV3/external/io_grib2/g2lib下面的makefile。按照这个文件的说明,为了使用grib2,我把

CPPFLAGS= -DUSE_JPEG2000给注释掉了

CPPFLAGS= -DUSE_PNG -DUSE_JPEG2000的注释符号去掉了
然后./configure 依然选40

根据修改的Makefile文件中给出了提示:
# In addition, you will need to add the following objects to the object list
#   below.
#        pngpack.o \
#        pngunpack.o \
#        enc_png.o \
#        dec_png.o \
#
#  Further, you will need to add "-lpng" to your link line in configure.wrf
#
# Note: PNG functionality has only been tested on Linux.
修改了 configure.wrf文件下的
LIB_EXTERNAL    = \
                      -L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/usr/local/netcdf/lib -lnetcdff -lnetcdf   -L$(WRF_SRC_ROOT_DIR)/external/io_grib2 -lio_grib2 -L/usr/local/jasper/lib -ljasper -L/usr/local/libpng/lib -lpng
但是我不知道那四个.0文件在哪?然后如何配置

看版主http://bbs.06climate.com/forum.php?mod=viewthread&tid=38231的将解决方法:

经过我自己的琢磨,后来终于找到了真正的原因:
1、g2lib文件夹下面的makefile代码中,默认只编译jpeg2000,不编译png,所以要修改相应的代码,同时在configure.wrf中的LIB_EXTERNAL一行添加-lpng。
2、g2lib的上一级目录io_grib2下面的makefile中,指指定了需要编译f源文件的目录,而没有指定需要编译c源文件的目录。实际上,g2lib及上一级目录中的源文件,既有f源文件,也有c源文件,都需要编译。所以要修改相应部分的代码。
经过上述修改后,终于出现了需要的o文件,希望这些o文件对后续的wps编译grib2有用,留待验证。
因为之前便以失败的log文件仅有的提示就是找不到那几个o文件。


我不知道第二条到底要怎么修改,咨询了版主也没有回复,其他哪位大牛遇到相应的问题,能给个解决办法吗?谢谢!

密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-15 15:18:20 | 显示全部楼层
我之前老是安装不成功,后来发现其实还是三个库文件的位置没有配置成功,在configure.wps文件中作如下修改:
COMPRESSION_LIBS        =  -L/usr/local/jasper/lib -ljasper -L/usr/local/libpng/lib -lpng16 -lpng -L/usr/local/lib -lz

COMPRESSION_INC         =  -I/usr/local/include -I/usr/local/jasper/include -I/usr/local/libpng/include

#
#   Settings for Linux x86_64, gfortran    (serial)
#
#
#COMPRESSION_LIBS    = -L/usr/local/jasper/lib -ljasper -lpng -lz
#COMPRESSION_INC     = -I/usr/local/jasper/include

一开始没有把最后两行注释掉,导致虽然前面两行配置了三个库文件的位置,但是由于后面两行的覆盖作用,导致zlib,libpng文件的位置配置错误
密码修改失败请联系微信:mofangbao
发表于 2016-4-10 21:58:38 | 显示全部楼层
png 库没安装好。或者指定路径有误
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-10 22:01:46 | 显示全部楼层
andrewsoong 发表于 2016-4-10 21:58
png 库没安装好。或者指定路径有误

你的意思是libpng?
另外我想问一下那几个.o文件是在那一步过程中生成的吗?
密码修改失败请联系微信:mofangbao
发表于 2016-4-14 13:01:46 | 显示全部楼层
我也遇到这个问题了,想请教下各位大神
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-15 14:35:12 | 显示全部楼层
andrewsoong 发表于 2016-4-10 21:58
png 库没安装好。或者指定路径有误

我发现如果数据格式选择grib1的话,我能顺利编译WPS。之前在其他电脑上安装过grib2格式的,只要安装zlib,jasper,libpng这三个库,然后安装位置配置配置一下就可以了,可是不知道为什么这次安装的时候老是提示这样的错误:
gcc -c  -D_UNDERSCORE -DBYTESWAP -DLINUX -DIO_NETCDF -DBIT32 -DNO_SIGNAL  -I/usr/local/jasper/include -DUSE_JPEG2000 -DUSE_PNG -D__64BIT__ enc_png.c
enc_png.c:5:17: 致命错误:png.h:没有那个文件或目录
#include <png.h>
                 ^
编译中断。
make[2]: [enc_png.o] 错误 1 (忽略)
gcc -c  -D_UNDERSCORE -DBYTESWAP -DLINUX -DIO_NETCDF -DBIT32 -DNO_SIGNAL  -I/usr/local/jasper/include -DUSE_JPEG2000 -DUSE_PNG -D__64BIT__ dec_png.c
dec_png.c:5:17: 致命错误:png.h:没有那个文件或目录
#include <png.h>
                 ^
编译中断。
make[2]: [dec_png.o] 错误 1 (忽略)


因为在安装libpng的时候报出zlib没有安装的错误,所以又重新将zlib自动安装了,安装目录为/usr/local,libpng的安装目录为/usr/local/libpng, jasper的安装目录为/usr/local/jasper,三个库文件重新安装过好几次,然后位置配置应该也没有问题呀
#ZLIB
export ZLIB=/usr/local/zlib
export ZLIBLIB=/usr/local/lib
export ZLIBINC=/usr/local/include

#LIBPNG
export LIBPNG=/usr/local/libpng
export LIBPNGLIB=/usr/local/libpng/lib
export LIBPNGINC=/usr/local/libpng/include

#JASPER
export JASPERLIB=/usr/local/jasper/lib
export JASPERINC=/usr/local/jasper/include
export JASPER=/usr/local/jasper

不知道错误到底是出现在哪一步了,求大神帮忙解决!谢谢!
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-15 15:13:21 | 显示全部楼层
andrewsoong 发表于 2016-4-10 21:58
png 库没安装好。或者指定路径有误

我自己捣腾成功了,谢谢
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-15 15:13:25 | 显示全部楼层
andrewsoong 发表于 2016-4-10 21:58
png 库没安装好。或者指定路径有误

我自己捣腾成功了,谢谢
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-15 15:13:29 | 显示全部楼层
andrewsoong 发表于 2016-4-10 21:58
png 库没安装好。或者指定路径有误

我自己捣腾成功了,谢谢
密码修改失败请联系微信:mofangbao
发表于 2016-8-14 10:51:59 | 显示全部楼层
xuexile xuexile
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表