This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
>From: "James R. Frysinger" <address@hidden> >Organization: College of Charleston >Keywords: 200111061842.fA6Igt112242 McIDAS platfomrs Jim, > Ah, well, not quite there yet. Nuts! > Apologies in advance for the long message.... see below... >> You should set those environment variables especially since it looks >> like you are going to be using gcc to build instead ov a vendor >> supplied compiler. You will, of course, have to change tose settings >> to match your setup. They will end up looking like those listed for >> Solaris x86: >> >> setenv CC /usr/local/gnu/bin/gcc >> setenv CPPFLAGS -DNDEBUG >> setenv CFLAGS -O >> setenv FC /home/mcidas/mcidas7.8/src/mcfc >> setenv FFLAGS -O >> setenv CXX >> >> withe the exception that you want to specify the exact location of >> gcc (e.g., /usr/local/bin/gcc, etc). > Here's the salient part of my .cshrc. Note that $HOME is >/export/home/mcidas on our box: ># umask >umask 002 > ># local additions >limit coredumpsize 0 >set cdpath = (. ~) > >set path=(/bin /usr/bin /usr/openwin/bin /opt/local/bin >/opt/SUNWspro/bin /usr/ccs/bin /usr/ucb /usr/sbin /etc >/opt/local/tex/bin /export/home/mcidas/mcidas7.7/bin .) /export/home/mcidas/mcidas7.7/bin? A couple of things here: o McIDAS gets installed so that ~mcidas/bin is where the executables get installed o everything gets built in the ~/mcidasN.M/src directory (N.M -> 7.7,. 7.8, etc) o you should be installing McIDAS 7.8 now If you are installing so that the McIDAS executables are being put in ~/mcidasN.M/bin, please change to a standard install. The standard installation process handles everything based on the definition of the Unix envoronment variable McINST_ROOT which should, in your case given that the HOME directory for 'mcidas' appears to be /export/home/mcidas, be: McINST_ROOT=/export/home/mcidas >setenv LD_LIBRARY_PATH >/usr/local/lib:/usr/openwin/lib:/usr/local/SUNWspro/lib:/usr/ccs/lib:/lib:/usr > /lib/:/opt/SUNWmotif/lib Do you have Sun compilers? I thought not. If not, then you do not need the SUNWspro/lib directory in your LD_LIBRARY_PATH. If yes, then why are you trying to build with gcc/f2c? ># environmental variables needed to use f2c/gcc >setenv CC /usr/local/bin/gcc >setenv CPPFLAGS -DNDEBUG >setenv CFLAGS -O >setenv FC /export/home/mcidas/mcidas7.8/src/mcfc >setenv FFLAGS -O >setenv CXX OK, this is good if gcc is in /usr/local/bin. NOTE, however that you do not have /usr/local/bin in your PATH: >set path=(/bin /usr/bin /usr/openwin/bin /opt/local/bin >/opt/SUNWspro/bin /usr/ccs/bin /usr/ucb /usr/sbin /etc >/opt/local/tex/bin /export/home/mcidas/mcidas7.7/bin .) So, either your PATH (path) is wrong, or you do have Sun compilers and should use them. Which is the case? ># MCHOME and McINST_ROOT >setenv MCHOME $HOME >setenv McINST_ROOT $MCHOME This is correct as I noted above. ># NOTE: conditional definition is only needed for C-shell users >if ( ! ${?MCPATH} ) then >setenv MCDATA $MCHOME/workdata >setenv MCPATH ${MCDATA}:$MCHOME/data:$MCHOME/help >setenv MCGUI $MCHOME/bin >setenv MCTABLE_READ "${MCDATA}/MCTABLE.TXT;$MCHOME/data/ADDESITE.TXT" >setenv MCTABLE_WRITE "$MCHOME/data/ADDESITE.TXT" >setenv XCD_disp_file $MCDATA/DECOSTAT.DAT > if ( ! ${?PATH} ) then > setenv PATH ${MCGUI} > else > setenv PATH ${MCGUI}:$PATH > endif >endif I changed the conditional PATH clause above effective for 7.8. It should now read: # NOTE: conditional definition is only needed for C-shell users if ( ! ${?MCPATH} ) then setenv MCDATA $MCHOME/workdata setenv MCPATH ${MCDATA}:$MCHOME/data:$MCHOME/help setenv MCGUI $MCHOME/bin setenv MCTABLE_READ "${MCDATA}/MCTABLE.TXT;$MCHOME/data/ADDESITE.TXT" setenv MCTABLE_WRITE "$MCHOME/data/ADDESITE.TXT" setenv XCD_disp_file $MCDATA/DECOSTAT.DAT if ( ! ${?path} ) then set path=${MCGUI} else set path=(${MCGUI} $path) endif endif ># Limit ADDE transfers to compressed ones >setenv MCCOMPRESS TRUE > > I pulled down the updates out of the bugfix subdirectory into the >mcidas7.8/update directory here and did .mcunpack on them. This was not necessary. The distribution compressed tar file always has all of the latest bugfixes and additions. The bugfix compressed tar file, mcupdate.tar.Z, is made available to users who have an existing installation and want to bring it up to current revision. >At this >point, I figured I had unpacked both the mcidas7.8 tarball (since I had >done .mcinstall on it before) and the update tarball. Then I did >~mcidas/mcidas7.8/src and did make chksrc. No complaints. Then I did >make mcx. Got a long list of > compile foobar.c done >interspersed with an occasional > update libsnafu.a done >then got this: OK. >.............long list........................................ >compile TIP.c: done >update libsdi.a: done >cd ../netcdf && make > >Making `all' in directory /export/home/mcidas/mcidas7.8/netcdf/libsrc > >c89 -c -g -I. @CPPFLAGS@ attr.c >sh: c89: not found >*** Error code 1 >make: Fatal error: Command failed for target `attr.o' >Current working directory /export/home/mcidas/mcidas7.8/netcdf/libsrc >*** Error code 1 >make: Fatal error: Command failed for target `subdir_target' >Current working directory /export/home/mcidas/mcidas7.8/netcdf >*** Error code 1 >make: Fatal error: Command failed for target `libsrc/all' >Current working directory /export/home/mcidas/mcidas7.8/netcdf >*** Error code 1 >make: Fatal error: Command failed for target >`../netcdf/libsrc/libnetcdf.a' >weather[31] Notice how the netCDF build is trying to use c89, not gcc. This tells me one or both of two things: o your PATH does not include the directory containing gcc (and f2c?) o you had not made the environment variables active (source .cshrc) before starting the build > I grepped the makelog with error and got only lines with files >containing that letter combination; grep fatal came up empty; grep >warning produced: >argglo.c:150: warning: comparison between pointer and integer >ftogif_.c:77: warning: assignment discards qualifiers from pointer >target type >m0gpfl.c:286: warning: passing arg 3 of `glob' from incompatible >pointer type >m0gpfl.c:328: warning: passing arg 1 of `Mcarrtofs' from incompatible >pointer type >m0mmgr.c:1315: warning: comparison is always false due to limited range >of data type >m0mmgr.c:1321: warning: comparison is always false due to limited range >of data type >m0mmgr.c:1651: warning: comparison is always false due to limited range >of data type ... Thewse are just warnings. > I did tail makelog and got: >./mccomp -gcc -I. -I../netcdf/libsrc -I../jpeg -I../zlib -c servutil.c >rm -f servutil.o >gcc -c -I. -I../netcdf/libsrc -I../jpeg -I../zlib -I/usr/dt/include >-I/usr/openwin/include servutil.c >compile servutil.c: done OK, so this says that gcc can be found. This is somewhat confusing given the PATH you listed above. > I have no idea what c89 is (part of makefile???) c89 is a standard C compiler. The configure process for the netCDF portion of the build defaults to use of c89 unless you override it by defining CC _before_ configure is run. >or Error code1 but >the bit about CPPFLAGS makes me wonder if my environment is set wrong. I am guessing that you may have added the CC CPPFLAGS, etc envirronment definitions to your .cshrc file, but you did not make them active in your Unix session before starting to build McIDAS. >That's why I included it at the top here. > > I also checked for the files mentioned in the error flags and found: > mcidas7.8/netcdf/libsrc/attr.o does not exist > mcidas7.8/netcdf/subdir_target does not exist > mcidas7.8/netcdf/libsrc/all does not exist > mcidas7.8/netcdf/libnetcdf.a does not exist >Was I supposed to have downloaded NetCDF too? I thought it was bundled >with McIDAS. No, it is bulndled with McIDAS. > Where do I go from here, Tom? If I change something and then do make >again, should I first clear something so that make starts from the >beginning? The absolute easiest thing to do is: 1) logoff 2) log back on 3) verify that CC, CPPFLAGS, etc are set in your environment: env | grep CC env | grep CPPFLAGS etc. 4) if 3) is OK, then do the following: cd mcidas7.8/src make clobber make all The 'make clobber' step will remove all things made with previous make attempts. Puts you back at a known state. > While I'm burning up bandwidth, let me check my understanding on >this because I don't see a lot of information splashed about on the >home pages about the differences. I need only to make McIDAS-X and not >McIDAS-XCD, right? Isn't the latter just for developers? McIDAS-XCD is the component of Unidata McIDAS that contains decoders for all of the data you can receive through the IDD. If you want to decode the realtime NOAAPORT data in the IDD, then you will have to build, install, and configure McIDAS-XCD. For reference, XCD stands for X Conventional Decoders. > Fortunately, I can do a lot of 'tweaking' at home via ssh which >saves me from running in just to check tiny details. I tend to want to >be there for the big make operations, though I suppose there's no real >need to be there unless I want to smell the smoke coming out of the box >as it churns away. Right. I build from home all of the time. In fact, I am writing this email from home. > Many thanks for your patience, too; you've been great with the >verbose and prompt replies, Tom. No worries. If you get a good, error free build and install, both of our jobs will be easier in the future. Tom