Satellite Application Facility for Numerical Weather Prediction › Forums › AAPP › AAPP General Discussion › install_aapp8.sh
- This topic has 11 replies, 3 voices, and was last updated 4 days, 4 hours ago by Nigel Atkinson.
-
AuthorPosts
-
September 21, 2023 at 7:01 am #48817fu zilinParticipant
I attempted to compile using the
install_aapp8.sh
script, and when it reached item 3, which is the compilation of eccodes, the following issue occurred:
[65%] Linking C executable ../bin/grib_to_netcdf
CMakeFiles/grib_to_netcdf.dir/grib_to_netcdf.c.o: In function ‘define_netcdf_dimensions’:
/public2/users/lwang1/MetOffice/build/eccodes-2.26.0-Source/tools/grib_to_netcdf.c:3074: reference to ‘nc_def_var_chunking’ undefined
/public2/users/lwang1/MetOffice/build/eccodes-2.26.0-Source/tools/grib_to_netcdf.c:3078: reference to ‘nc_def_var_deflate’ undefined
make[2]: *** [bin/grib_to_netcdf] Error 1
make[1]: *** [tools/CMakeFiles/grib_to_netcdf.dir/all] Error 2
make: *** [all] Error 2
problem with ecCodes makeHow can I deal it, please.
September 21, 2023 at 1:42 pm #48819Nigel AtkinsonModeratorHello,
I suspect your system is picking up an old version of the netCDF library. Since AAPP does not need netCDF support, please try building ecCodes with the following cmake flag, just after line 227 of the install_aapp8.sh script:
-DENABLE_NETCDF=OFF
Actually I noticed that the version of install_aapp8.sh on the NWP SAF server had somehow reverted to an earlier version, intended for use with AAPP v8.10. I have now replaced it with the version that was issued with AAPP v8.11, which uses ecCodes 2.27.1. In practice it won’t matter which version of ecCodes you install: the netCDF modification applies to both.
Regards,
Nigel
September 22, 2023 at 6:56 am #48821fu zilinParticipantThank you for answering my question,I had successfully fixed this issue by upgrading the library.Meanwhile I also learn a new way you told me to solve the problem.Thank you very much.
But I found some new problems in the next step:
One is that line 509 of the new script in item=9,it tries to assign “Linux-Intel-icc” to arch if ifort is used,but when I installed,it would dispaly the error as follow:
【+ ./configure ‘–aapp-prefix=/public2/users/lwang1/MetOffice/install/AAPP_8.11’ ‘–xrcs-prefix=/public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0’ ‘–fftw-prefix=/public2/users/lwang1/MetOffice/install/opslrs/fftw-3.0.1’ ‘–prefix=/public2/users/lwang1/MetOffice/install/opslrs’ ‘–arch=Linux-Intel-icc’ ‘–optimize=normal’ ‘–site-id=UKM’ ‘–nthreads=20′
Unknown arch `Linux-Intel-icc’
+ status=2
Error: OPS-LRS configure failed】So after I read the OPS-LRS User Manual and it said may use Linux-Intel because in the config sub-directory just has Linux-Intel file.
Other issue is that when I reach item=8,it displays “libfl.a is installed” .Does this mean my installation was successful ?
If successful,for item=9 to install OPS-LRS,the following error was reported:
【cd MSGS/src; make bin
make[2]: Entering directory “/public2/users/lwang1/MetOffice/build/OPS_V8.4-AAPP-l-20211216/src/MSGS/src”
icc -Wl,–start-group -o MSGS__Serveur MSGS.a ../../MSG/src/MSG.a ../../ENV/src/ENV.a ../../CMN/src/CMN.a ../../CMN/PRS/src/CMN_PRS.a ../../CMN/DAT/src/CMN_DAT.a ../../CMN/OBS/src/CMN_OBS.a ../../MSG/src/MSG.a ../../ENV/src/ENV.a ../../CMN/src/CMN.a ../../CMN/PRS/src/CMN_PRS.a ../../CMN/DAT/src/CMN_DAT.a ../../CMN/OBS/src/CMN_OBS.a -L../../EXT/navigation/lib -lnavigation -L../../EXT/MLA/lib -lMLA -L../../EXT/env/lib -lenv -L../../EXT/ngmath-lite/lib -lngmath-lite -L../../EXT/lapack-lite/lib -llapack-lite -L../../EXT/spline-lite/lib -lspline-lite -L../../EXT/numrec-lite/lib -lnumrec-lite -L../../EXT/fortran-lock/lib -lfortran-lock -L/public2/users/lwang1/MetOffice/install/AAPP_8.11/AAPP/lib -lnavtool -lf7tp -lf7cp -lf7gp -lf7ml -L/public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0/lib -lxerces-c1_7_0 -L/public2/users/lwang1/MetOffice/install/opslrs/fftw-3.0.1/lib -lfftw3 -lifport -lifcore -limf -lsvml -lipgo -lirc -lirc_s -ldl -lfl -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lpthread -lnsl -lrt -lm -lc -Wl,–end-group -Wl,-static -limf -lifcoremt -lirc -Wl,-call_shared -lm -lc
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: cannot find -lfl
make[2]: *** [MSGS__Serveur] Error 1
make[2]: Leaving directory “/public2/users/lwang1/MetOffice/build/OPS_V8.4-AAPP-l-20211216/src/MSGS/src”
make[1]: *** [bin] Error 2
make[1]: Leaving directory “/public2/users/lwang1/MetOffice/build/OPS_V8.4-AAPP-l-20211216/src”
make: *** [all] Error 2
OPS-LRS make failed】Why is there an error, I won’t install successfully for flex in item=8 ?
September 22, 2023 at 11:20 am #48823fu zilinParticipantI’m sorry for the previous reply which in September 22, 2023 at 6:56 am. I had solved the second problem by installing flex successfully.So for now it can find the -lfl files.I’m sorry again for wasting your time.
But the first issue still remains,and if I change the arch=Linux-Intel-icc to the arch=Linux-Intel,then the codes can run.
However it report the new error as follow:
【/public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0/lib/libxerces-c1_7_0.so: undefined reference to ‘stricmp(const char*, const char*)’
/public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0/lib/libxerces-c1_7_0.so: undefined reference to ‘strnicmp(const char*, const char*, unsigned int)’
make[2]: *** [MSGS__Serveur] Error 1】It’s similar to the question I asked the first time. Is this a compiler issue? Since my compiler is intel, I had change something when configuring the xerces library for example I used icc and icpc instead of gcc and g++ in line 359 of the script.
Or is it a version issue with the xerces library?Sincerely,
Fu
September 25, 2023 at 7:50 am #48825Nigel AtkinsonModeratorSorry about the confusion with Linux-Intel-icc. It seems that install_aapp8.sh is a little out of step with the options available in OPS-LRS. You have solved it correctly.
I’m not sure about the xerces problem. We have not previously tried building this library with icc and icpc. I would try it on our system here, but unfortunately there appears to be a license issue, so I can’t run them.
It is unfortunate that OPS-LRS requires a very old version of xerces (1.7.0). This has been on our risk register for some time. But I checked a newer version (2.8.0) and that still has calls to stricmp and strnicmp, which suggests that the problem is not related to the old version.
I will alert our colleagues at Meteo-France to your issue and see if they can help.
Regards,
Nigel
September 25, 2023 at 9:51 am #48826sonia pereParticipantDear Fu,
Could you send us your file: install_app8.sh? Thanks
Regards,
Sonia
September 26, 2023 at 1:37 am #48828fu zilinParticipantThank you for your continued help and look forward to reply from you again.
Sincerely,
Fu
September 26, 2023 at 1:40 am #48829fu zilinParticipantHello,Sonia
How do I send the script to you? Can you give me an email?
September 26, 2023 at 7:30 am #48830Nigel AtkinsonModeratorSonia,
The install_aapp8.sh is almost the same as the one at https://nwp-saf.eumetsat.int/downloads/aapp_data_files/, with the following changes: line 359 (xerces build) use icc and icpc. Line 509: use Linux-Intel (because Linux-Intel-icc was not actually included in OPS-LRS v8.4. We had it in the released version of OPS-LRS v8.0 but it got omitted accidentally).
Nigel
September 26, 2023 at 7:52 am #48831Nigel AtkinsonModeratorFu,
I noticed one thing, which may or may not be relevant. On your system, is there a difference between icc and icpc? I understand that icc can compile both C and C++, and in the OPS-LRS config file Linux-Intel only icc is used. But when building xerces you used icpc for the C++ compiler. If they are different versions then perhaps there might be a compatibility issue, in which case try building xerces with only icc.
Nigel
September 26, 2023 at 8:38 am #48832fu zilinParticipantHello,Nigel
Unfortunately, I tried building with only icc, but it still failed.
November 19, 2024 at 9:05 am #50038Nigel AtkinsonModeratorSorry, this topic has been dormant for a long time. While preparing an updated install_aapp8.sh for the upcoming AAPP v8.14 release, we have done some testing on the ECMWF server, and I believe the issue with icc is now solved. The problem was that the xerces-c-src1_7_0 library uses functions stricmp and strnicmp that are not part of the POSIX standard and are not supported in the icc compiler. We made the following addition to the install_aapp8.sh script, in the section that deals with xerces:
#For Intel compiler we need to change XMLString.cpp due to its use of non-standard functions stricmp and strnicmp if [ $CC = icc ]; then file=xerces-c-src1_7_0/src/xercesc/util/XMLString.cpp a="$(grep strings.h $file)" if [ -z "$a" ]; then echo "Modifying $file to support Intel compiler" sed -i "s/#include <string.h>/#include <string.h>\n#include <strings.h>/" $file sed -i s/stricmp/strcasecmp/ $file sed -i s/strnicmp/strncasecmp/ $file fi fi
OPS-LRS then builds successfully.
Nigel
- This reply was modified 4 days, 4 hours ago by Nigel Atkinson.
-
AuthorPosts
- You must be logged in to reply to this topic.