| Date: 19-FEB-1997 14:17:50.67
From: DEC:.REO.REOVTX::WOOD_J "[email protected]"
Subj: Re. mail to Digital about missing DECC RTL functions
To: SMTP%"[email protected]"
Nick,
>I am trying to link several object libraries (I don't have the source) on
>AXPVMS 6.1-1H2 and I get several undefined symbols
>
> DECC$CLOSEDIR
> DECC$OPENDIR
> DECC$TRUNCATE
> ...
>
>I presume these are found in the POSIX library which I do not have. I need
>to stay at this version of VMS for a while. Is there any way I can build
>this executable?
I doubt that this is a POSIX problem. Rather, I suspect that the sources
were compiled on an OpenVMS v7.0 (or greater) system. This is because
OpenVMS v7 added support for many new functions in the C RTL. From DEC C v5.2
onwards, the compiler checks which version of OpenVMS it is being run on,
and configures itself accordingly. See the extract from the DEC C release
notes below.
If you want to compile your sources on say OpenVMS v7, but be able to generate
an object file which will link on OpenVMS v6.1, then you need to follow the
instructions in the DEC C Run-Time Library reference manual, section 1.5.
Essentially this means redefining DECC$SHR logical and compiling with
__VMS_VER redefined. This probably won't help you much actually, because
in your scenario the program is calling routines which aren't in the old
DEC C run-time library. (It would be useful in so far as the distributor
of the object modules should get a warning from the compiler about the
routines which don't exist on OpenVMS v6.1 being undefined; and hence
the distributor would have to provide his own versions of those routines).
Thus as I see it the options are:
1) you upgrade to OpenVMS v7 (v6.1 is now rather old)
2) you or the distributor write your own versions of the missing run-time
library routines.
I'm sorry there is no easy answer.
Regards,
John Wood
Digital Equipment Co
----------------------
From DEC C Release Notes:
5.4 Changes in DEC C RTL Header Files for V5.2 of DEC C/C++
The release notes in this section describe changes to the
header files shipped with DEC C V5.2 for OpenVMS Systems.
These header files contain enhancements and changes made to
the DEC C Run-Time Library for OpenVMS Systems.
New function prototypes and structure definitions which
define new functionality in the DEC C Run-Time Library
correspond to new functionality added to the DEC C Run-Time
Library which is shipped with OpenVMS V7.0.
o New Header Files Added
18
A total of 20 new header files were added to the DEC C
RTL suite of header files. Header files were added for
implementation of Amendment 1 of the ISO C standard,
compatibility with UNIX systems, and for introduction of
new functions. Table 1 lists those headers added for DEC
C V5.2.
Table_1_New_DEC_C_V5.2_Header_Files________________________
Header
File________Description____________________________________
<dirent.h> Directory Manipulation Functions
<ftw.h> File Tree Walking
<if.h> Socket Packet Transport Mechanism
<if_arp.h> Socket Address Resolution Protocol
<ioctl.h> I/O Controls for Special Files
<iso646.h> Alternative Spelling for Language Tokens
<libgen.h> Filename Manipulation
<memory.h> String Handling
<mman.h> Mapping Pages of Memory
<nameser.h> Maximum Domain Name Size
<pwd.h> Password File Access Functions
<resolv.h> Resolver Configuration File
<resource.h>Declarations for Resource Operations
<strings.h> String Handling
<timers.h> Clock and Timer Functions
<times.h> File Access and Modifications Times Structure
<tzfile.h> Time Zone Information
<utsname.h> User Information
<wait.h> Declarations for Process Waiting
<wctype.h>__Wide_Character_Classification_and_Mapping______
o New Functions Defined In Header Files
19
OpenVMS V7.0 introduces many new DEC C RTL functions
which have been added to fulfill the request of
application developers and to implement those functions
defined by ISO C Amendment 1. These functions have been
implemented on both OpenVMS Alpha V7.0 and OpenVMS VAX
V7.0. These functions are documented in the DEC C Run-
time Library Reference Manual for OpenVMS Systems.
basename() herror() seed48() sysconf()
bcmp() hostalias() seekdir() telldir()
bcopy() hstrerror() setenv() tempnam()
btowc() index() sethostent() towctrans()
bzero() initstate() setitimer() truncate()
closedir() ioctl() setnetent() tzset()
confstr() jrand48() setprotoent() ualarm()
dirname() lcong48() setservent() uname()
drand48() lrand48() setstate() unlink()
endhostent() mbrlen() sigaction() unsetenv()
endnetent() mbrtowc() sigaddset() usleep()
endprotoent() mbsinit() sigdelset() vfwprintf()
endservent() mbsrtowcs() sigemptyset() vswprintf()
erand48() memccpy() sigfillset() vwprintf()
ffs() mkstemp() sigismember() wait3()
fpathconf() mmap() siglongjmp() wait4()
ftruncate() mprotect() sigmask() waitpid()
ftw() mrand48() sigpending() wcrtomb()
fwide() msync() sigprocmask() wcsrtombs()
fwprintf() munmap() sigsetjmp() wcsstr()
fwscanf() nrand48() sigsuspend() wctob()
getclock() opendir() socket_fd() wctrans()
getdtablesize() pathconf() srand48() wmemchr()
gethostent() pclose() srandom() wmemcmp()
getitimer() popen() strcasecmp() wmemcpy()
getlogin() putenv() strdup() wmemmove()
getpagesize() random() strncasecmp() wmemset()
getpwnam() readdir() strsep() wprintf()
getpwuid() rewinddir() swab() wscanf()
getservent() rindex() swprintf()
gettimeofday() rmdir() swscanf()
|