?
Solved

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

Posted on 2001-06-05
4
Medium Priority
?
1,306 Views
Last Modified: 2011-04-14
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.
0
Comment
Question by:Leimy2k
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 6

Expert Comment

by:Talmash
ID: 6158945
hi ,

do you mean shared library by permission meanings ?

chmod 775 <lib_name>

Tal
0
 
LVL 3

Accepted Solution

by:
mrn060900 earned 300 total points
ID: 6159225
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:

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
0
 
LVL 21

Expert Comment

by:tfewster
ID: 7705124
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

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER !

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

Expert Comment

by:modulo
ID: 7757475
Finalized as proposed

modulo

Community Support Moderator
Experts Exchange
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A metadevice consists of one or more devices (slices). It can be expanded by adding slices. Then, it can be grown to fill a larger space while the file system is in use. However, not all UNIX file systems (UFS) can be expanded this way. The conca…
I promised to write further about my project, and here I am.  First, I needed to setup the Primary Server.  You can read how in this article: Setup FreeBSD Server with full HDD encryption (http://www.experts-exchange.com/OS/Unix/BSD/FreeBSD/A_3660-S…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Suggested Courses
Course of the Month15 days, 6 hours left to enroll

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question