The Question is:
I am using DECC V6.0 compiler with option
/STANDARD=VAXC on OPEN_VMS 6.2.
Is there any way that I can link object files produced from DECC 6.0
compiler with prior version of DECC RTL (V 5.5 or earlier) and OPEN_VMS 6.1
(or earlier). Currently, I got the following link errors when I link DEC C
V6.0 object files with older DEC RT
L and OPEN_VMS:
Thanks for your help
The Answer is :
Please see the information on the DEC C "backport" library as a
starting point -- look in the DEC C documentation set for details.
In general, downward compatibility is not a design goal of OpenVMS
and of OpenVMS compilers -- upward-compatibility is. In other words,
the officially supported approach is to compile and link on the oldest
OpenVMS version that the package is intending to support.
When considering downward compatibility, there are particular requirements
around the contents of the system include definitions as well as the RTL
entry points available when trying to move code downward -- there can be
missing definitions and entry points. Further, the DEC C compiler is
somewhat unusual in that it looks at the DECC$SHR RTL image to determine
what routines and entry points it recognizes.
As a start, acquire the currently available ECO for the DEC C run-time
library, and apply it to all systems.
If you wish to pursue an unsupported approach, you will need to copy the
older DECC$SHR image to your current OpenVMS system, named something akin
to dev:[dir]DECC$SHR_V552, and perform the following sequence:
$ DEFINE/USER DECC$SHR dev:[dir]DECC$SHR_V552.EXE;
$ CC/DECC/DEFINE=__VMS_VER=60100000 program.c
For your current situation, most any value below 60200000 should work in
the above, as the symbols DECC$$GA____CTYPET and DECC$$GA____CTYPEA were
added in the OpenVMS V6.2 release.
Please see topics (3761), (5192), and (6829).
Related topics include (173), (866), (1052), (1171), (1904), (2738),
(2932), (4336), and (6049).