1828682 Members
2485 Online
109984 Solutions
New Discussion

Dec c library

 
Philip Levin
New Member

Dec c library

I am running open VAX/VMS 6.1. I have the DEC C library version major 2 minor 0. Is it possible to install a newer version of the library DEC C version major 2 minor 1 on the system?
5 REPLIES 5
Robert Gezelter
Honored Contributor

Re: Dec c library

Philip,

For starters, check the Software Product Description of the later C compiler to see if it officially supports 6.1.

- Bob Gezelter, http://www.rlgsc.com
Steven Schweda
Honored Contributor

Re: Dec c library

From where did you get those version numbers?

I don't have an old VAX up at the moment. Do
you have a "SYS$LIBRARY:DECC$CRTL.README"? It
describes some potentially interesting C RTL
upgrade possibilities.
Philip Levin
New Member

Re: Dec c library

To get the version number of the library I used the ANAL/Image on DECC$SHR.exe in the sys$library directory.
Steven Schweda
Honored Contributor

Re: Dec c library

No bets, but it might be educational to
compile and run this (DECC_VER.C):

#include

int main( void)
{
#ifdef __VMS_VERSION
printf( " __VMS_VERSION: >%s<.\n", __VMS_VERSION);
#else /* def __VMS_VERSION */
printf( " __VMS_VERSION: (undefined)<.\n");
#endif /* def __VMS_VERSION [else] */

#ifdef __VMS_VER
printf( " __VMS_VER = %d.\n", __VMS_VER);
#else /* def __VMS_VER */
printf( " __VMS_VER = (undefined).\n");
#endif /* def __VMS_VER [else] */

#ifdef __DECC_VER
printf( " __DECC_VER = %d.\n", __DECC_VER);
#else /* def __DECC_VER */
printf( " __DECC_VER = (undefined).\n");
#endif /* def __DECC_VER */

#ifdef __CRTL_VER
printf( " __CRTL_VER = %d.\n", __CRTL_VER);
#else /* def __CRTL_VER */
printf( " __CRTL_VER = (undefined).\n");
#endif /* def __CRTL_VER */

return 0;
}
John Gillings
Honored Contributor

Re: Dec c library

Philip,

One answer - sure, upgrade OpenVMS and you'll get a later CTRL!

OK, so you don't want to upgrade... I would STRONGLY recommend against installing a later CRTL as the default system RTL. All code should run with the later version, BUT if you link on your modified system, the images won't run on other V6.1 systems (maybe you don't care?).

However, you can "install" any RTL on any version of OpenVMS as a private image and link or run against it. Get a copy of the RTL you want, place it (say) in SYS$LOGIN and define a logical name pointing to the full filespec.

For example:

$ COPY somewhere:DECC$SHR SYS$LOGIN:
$ DEFINE DECC$SHR SYS$LOGIN:DECC$SHR
$ LINK yourprogram ! Links against your private RTL
$ RUN yourprogram ! Runs against your RTL

In some cases you may need to bypass the known image by including a version number in the logical name:

$ DEFINE DECC$SHR SYS$LOGIN:DECC$SHR.EXE;

Since V6.1 isn't supported anyway, you probably don't care that installing a newer RTL isn't supported. If you do choose to do it regardless of support, make sure you have a workable plan to fall back to the original RTL, just in case something goes wrong!

A crucible of informative mistakes