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:
#!/bin/tcsh
/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
like:
                                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

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



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