Compiling on Linux (RH7.1, 2.4.x kernel)

From: Brashers, Bart -- MFG, Inc. (Bart.Brashers AT unknown)
Date: Fri Aug 31 2001 - 16:43:21 MDT

Hi, I'm trying to compile under Linux, and am having problems.

This is what I've had to do, so far, to make ncarg-4.2.2 compile on my
Redhat 7.1 (2.4.3-12 kernel) system:

-- RH7.1 problem #1 begin --
I edited configure/LINUX, and changed CtoFLibraries (after doing a `locate
libg2c.a`). This fix I found by reading this mailing list's archives. :)
-- RH7.1 problem #1 end --

-- RH7.1 problem #2 begin --
I replaced /lib/cpp, which was just a link to /usr/bin/cpp, with a script:
/usr/bin/cpp -traditional $argv

According to the cpp man page, starting with the 2.96 version of cpp, we
should no longer use it to pre-process *.F files :(. Without the
-traditional flag, the following lines produce different output:
  10 print*
 10 print*
cpp won't conserve white space anymore, which leads to output lines like
 10 print*
which won't compile, as there are character in the continuation column.
This fixed problems with openpw.F.
-- RH7.1 problem #2 end --

Several other problems with the code came up, some of which I've fixed, and
some of which I still need help on:

-- Fixed #1 begin --
In bccurv.f, line 102, a comma is missing from the FORMAT statement.
-- Fixed #1 end --

-- Fixed #2 begin --
In ngmath/src/bin/nnalg/nadisp.F, lines 168 and 196, there are some format
statements that cpp apparently can't deal with. It appends an extra ' at
the end of the line, past the closing ), since the string starts on one line
and ends on the next. May I suggest:
  520 FORMAT(' Number of input data points = ',I8/
     + ' This exceeds the maximum allowed, which is ',I8)
and similarly for statment 530 at line 196?
-- Fixed #2 end --

-- Fixed #3 begin --
make says:
X11_class0.c:638:60: missing terminating ' character
X11_class0.c:639:1: missing terminating ' character
X11_class0.c:863:52: missing terminating ' character
X11_class0.c:864:1: missing terminating ' character
(both makedepend and gcc have this complaint). The offending lines look
                                if (len == 1 && (keybuffer[0] == ' '
                                        || keybuffer[0] == '^M'))
where the ^M is a literal control character, like you would get in emacs by
typing C-qC-M. Replacing it with \^M doesn't help. I replaced '^M' with
'\012' and it at least compiled, though I haven't checked for the
appropriate behavior yet...
-- Fixed #3 end --

But I still have an error that I haven't been able to fix:

-- Not Fixed #1 begin --
psplit.c: In function `picture_body':
psplit.c:524: invalid operands to binary -
psplit.c:528: invalid operands to binary -
psplit.c: In function `from_ps':
psplit.c:577: invalid operands to binary -
psplit.c:583: invalid operands to binary -
psplit.c:589: aggregate value used where an integer was expected
psplit.c:595: aggregate value used where an integer was expected
psplit.c:622: aggregate value used where an integer was expected
psplit.c: In function `picture_body_ps':
psplit.c:668: invalid operands to binary -
psplit.c:671: invalid operands to binary -
make[5]: *** [psplit.o] Error 1

where the offending lines look like
    bsize = (size_t) (pends[0] - p1_start);
I have no idea why these fail, it looks fine to me. Shouldn't these be only
warnings (make does exit with Error 1)? Any clues?
-- Not Fixed #1 end --

The rest of the failed compilations are due to the above failures (libctrans
doesn't get built, so idt also fails to be built).


Bart Brashers                   MFG Inc.
Air Quality Meteorologist       19203 36th Ave W Suite 101
bart.brashers AT unknown        Lynnwood WA 98036-5707           425.921.4000 Fax: 425.921.4040

This archive was generated by hypermail 2b29 : Thu Sep 06 2001 - 10:40:10 MDT