HP OpenVMS Systems

ask the wizard
Content starts here

Link Libraries and LINK Errors?

» close window

The Question is:

 
I have a logical called lnk$library_1 which is define as
$ define/system/exec lnk$library_1 sys$library:vaxcrtl.olb in the
 systartup_vms.com
 
I have another file called make_dms.com where I am defining
define lnk$library_1 NL:
 
what does this mean ? when I am executing this command procedure it gives an
 error message
"error opening NL:[].OLB; as input
-RMS-E-EOF, end of file detected" what could be the possible reason ? kindly
 suggest on this so that I can proceed further.
 
 
 
 
 


The Answer is :

"error opening NL:[].OLB; as input" is exactly what is expected. You have
 asked the linker to search the null device for an object library. Obviously
 it cannot exist.
 
 What you should do depends on what you are trying to achieve. Note that
 LNK$LIBRARY* logical names are independent name spaces in each logical name
 table referenced from LNM$FILE_DEV. That is, the linker will look at
 LNK$LIBRARY, LNK$LIBRARY_1, LNK$LIBRAY_2 ... etc first in LNM$PROCESS, then
 the same in LNM$JOB, then LNM$GROUP then LNM$SYSTEM (assuming a default
 LNM$FILE_DEV search list). So, defining LNM$LIBRARY_1 in the PROCESS table
 will not affect the linker searching the library pointed to by LNM$LIBRARY
 logical names in the system table.
 
 If you wish to supress searching of the system logical name table definitions
 use the /USERLIBRARY qualifier:
 
LINK
 
  /USERLIBRARY
 
        /USERLIBRARY[=(table[,...])]
        /USERLIBRARY=ALL (default)
        /NOUSERLIBRARY
 
     Directs the linker to process one or more default user libraries
     to resolve symbolic references that remain undefined after all
     specified input files have been processed.
 
     Table specifies the logical name tables that the linker searches
     for default user libraries. The following keywords are the only
     acceptable parameter values:
 
     Keyword   Description
 
     ALL       Directs the linker to search the process, group, and
               system logical name tables for default user library
               definitions. This is the default.
     GROUP     Directs the linker to search the group logical name
               table for default user library definitions.
     NONE      Directs the linker not to search any logical name
               table; the /USERLIBRARY=NONE qualifier is equivalent
               to the /NOUSERLIBRARY qualifier.
     PROCESS   Directs the linker to search the process logical name
               table for default user library definitions.
     SYSTEM    Directs the linker to search the system logical name
               table for default user library definitions.
 
 
  Also note that if you are using DECC (as opposed to the obselete product
  VAXC), there is no need to direct the linker to search
  sys$library:vaxcrtl.olb. Even if you are using VAXC, you'd be much better
  off linking against the shareable image library SYS$SHARE:VAXCRTL.EXE.

answer written or last revised on ( 4-JUL-2001 )

» close window