• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1352
  • Last Modified:

xlC:How to create a shared library? (AIX)

How do I create a shared library with xlC?

Any good web links or procedures would be greatly
appreciated.  I am finding some things for gcc but
I need xlC to work.

Thanks in advance.
1 Solution
hi ,

do you mean shared library by permission meanings ?

chmod 775 <lib_name>

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();
    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:

AIX 3.2 using xlc (unverified)

Drop the `-fpic', and use `-bM:SRE -bE:libshared.exp' instead of `-shared'.

You also need to create a file `libshared.exp' containing the list of symbols to export, in this case `myfunc'.

In addition, use `-e _nostart' when linking the library (on newer versions of AIX, I believe this changes to `-bnoentry').

Hope this helps

Regards Mike
No comment has been added lately, so it's time to clean up this TA.
I will leave a recommendation for this question in the Cleanup topic area as follows:
- Answered by mrn

Please leave any comments here within the next 7 days


tfewster (I don't work here, I'm just an Expert :-)
Finalized as proposed


Community Support Moderator
Experts Exchange
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now