[comp.sys.atari.st] help with dlibs

depeche@quiche.cs.mcgill.ca (Sam Alan EZUST) (12/14/89)

I am a novice user of computers and compilers, and just downloaded
dlibs12 from terminator.
I placed the header files in e:\dlibs\h,
and everything else in e:\dlibs

Now I want laser C to use these libraries instead of the default ones.

I went into the environment variables and changed all the ones
I thought I was supposed to.

clib=e:\dlibs\dlib.a
cinit=e:\dlibs\dstart.o
cinclude=e:\dlibs\h\

and I also tried changing libpath to e:\dlibs\

And now when I try to compile/link a program, the linker says

 undefinined symbol: __lmul

I don't even know what lmul is, but anyway... What else do I need to
do in order to get laserc working with dlibs?
-- 
S. Alan Ezust                                   depeche@calvin.cs.mcgill.ca
McGill University Department of Computer Science - Montreal, Quebec, Canada

dal@syntel.mn.org (Dale Schumacher) (12/15/89)

[depeche@quiche.cs.mcgill.ca (Sam Alan EZUST) writes...]
> 
> I am a novice user of computers and compilers, and just downloaded
> dlibs12 from terminator.
> I placed the header files in e:\dlibs\h,
> and everything else in e:\dlibs
> 
> Now I want laser C to use these libraries instead of the default ones.
> 
> I went into the environment variables and changed all the ones
> I thought I was supposed to.
> 
> clib=e:\dlibs\dlib.a
> cinit=e:\dlibs\dstart.o
> cinclude=e:\dlibs\h\
> 
> and I also tried changing libpath to e:\dlibs\
> 
> And now when I try to compile/link a program, the linker says
> 
>  undefinined symbol: __lmul
> 
> I don't even know what lmul is, but anyway... What else do I need to
> do in order to get laserc working with dlibs?
> -- 
> S. Alan Ezust                                   depeche@calvin.cs.mcgill.ca
> McGill University Department of Computer Science - Montreal, Quebec, Canada


DISCLAIMER:  I haven't tried to make dLibs work with Laser C, and it may
not work at all since it was designed to work with Alcyon C and Sozobon C.

The problem appears to be one of not finding a function which is probably
a reference internally generated by the compiler.  This one is most likely
the 'long multiply' function.  In Alcyon/Sozobon the name of this function
is 'lmul' (note: NO leading underscore, this is in assembly code) and it,
along with others like 'ldiv', 'lmod', etc. are in the "math.s" source file.
You MAY be able to get dLibs working with Laser C by putting two underscores
in front of the global identifiers in "math.s" and re-assembling that source.
The compiler makes reference to these function when it need to multiply,
divide, modulo a long or unsigned long value, since these operations are
not directly supported by the 68000.  The names used to call these functions
vary by compiler and are supplied with the compiler's normal libraries.
If you have a library manager, you may be able to extract the appropriate
functions from the Laser C library and combine then with dLibs, or simply
link with dLibs first, then with the default library to resolve any other
dependencies.  Good luck.

\\   /  Dale Schumacher                         399 Beacon Ave.
 \\ /   (alias: Dalnefre')                      St. Paul, MN  55104-3527
  ><    ..!nic.mr.net!bungia.mn.org!syntel!dal  United States of America
 / \\   "The power of accurate observation is commonly called cynicism
/   \\   by those who have not got it." -George Bernard Shaw