The precise method for creating shared libraries varies between
different systems. There are two main parts to the process; firstly the
objects to be included in the shared library must be compiled, usually
with options to indicate that the code is to be position-independent;
secondly, these objects are linked together to form the library.
Here's a trivial example that should illustrate the idea:
/* file shrobj.c */
const char *myfunc()
{
return "Hello World";
}
/* end shrobj.c */
/* file hello.c */
#include <stdio.h>
extern const char *myfunc();
main()
{
printf("%s\n", myfunc());
return 0;
}
/* end hello.c */
$ gcc -fpic -c shrobj.c
$ gcc -shared -o libshared.so shrobj.o
$ gcc hello.c libshared.so
$ ./a.out
Hello World
By far the best method if you want the library and build procedure to be
anything approaching portable is to use GNU Libtool. This is a small
suite of utilities which know about the platform-dependent aspects of
building shared libraries; you can distribute the necessary bits with
your program, so that when the installer configures the package, he or
she can decide what libraries to build. Libtool works fine on systems
which do not support shared libraries. It also knows how to hook into
GNU Autoconf and GNU Automake (if you use those tools to manage your
program's build procedure).
If you don't want to use Libtool, then for compilers other than gcc, you
should change the compiler options as follows:
(Submission of additional entries for the above table is encouraged.)
Other issues to watch out for:
LD_LIBRARY_PATH environment
LD_RUN_PATH environment variable).
|
UNIXguide.net
English to Visayan Cebuano Dictionary |
Suggest a Site
Visayan Cebuano to English Dictionary |