dynamic linking C code with ld link editor
Steve Alter
alter at ttidca.TTI.COM
Wed Feb 13 14:09:27 AEST 1991
In article <23713 at netcom.COM> aed at netcom.COM (Andrew Davidson) writes:
} I am trying to fiqure out how to use the ld link editor to dynamicly link
} some C code. Are there any refference? All I have are the man pages
} which are less than usefull for the beginer
}
} I am working on a sun workstation, but must also get this to run on a
} sys V unix(SCO ODT UNIX sysV 3.2.0).
This info is for SunOS (4.1, but I believe also applies to 4.0.)
Load the "shlib.etc" package from your distrubution media (under 4.1
the command to do this is "/usr/etc/install/add_services") and then
look in directory /usr/lib/shlib.etc at the README and Makefile files.
That stuff only describes how to build a new version of the shared libc
library, but it shows some of the basics that might be useful/needed in
building your own library.
Highlights:
-- You have to build all of your object modules (for this library) with
the "-pic" option to generate position-independent (a.k.a.
relocatable) code.
-- The Makefile uses the "-assert pure-text" option on the "ld" command
to ensure (I believe) that everything in the library is read-only,
i.e. no writable global data areas because read-only is a must for
anything that is shared between anonymous users. If you want a
global writable buffer then you've got to create a shared-memory
segment.
-- The Makefile also plays some games to ensure that the object modules
go into the library in the correct order. The concepts of ranlib and
the __.SYMDEF module don't apply to shared libraries because they're
mapped directly into the address space of the process, whereas a
normal library is just a collection of .o files with a symbol table
up front and .o files still have to be linked with ld.
Read the "ld" manual-page very carefully as it explains a lot of how
the ld and ld.so programs, the LD_LIBRARY_PATH, and the version numbers
on the /usr/lib/lib*.s[ao].* files work together.
My ultimate suggestion: buy a set of the manuals; there's a whole
chapter on shared libraries in there.
--
Steve Alter <alter at ttidca.tti.com>
{philabs,psivax,pyramid,quad1,rdlvax,retix,rutgers}!ttidca!alter
Transaction Technology Inc. a subsidiary of Citicorp (213) 450-9111 x2541
More information about the Comp.unix.wizards
mailing list