[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

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

Posted on 2001-06-05
4
Medium Priority
?
1,314 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

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

My previous tech tip, Installing the Solaris OS From the Flash Archive On a Tape (http://www.experts-exchange.com/articles/OS/Unix/Solaris/Installing-the-Solaris-OS-From-the-Flash-Archive-on-a-Tape.html), discussed installing the Solaris Operating S…
Java performance on Solaris - Managing CPUs There are various resource controls in operating system which directly/indirectly influence the performance of application. one of the most important resource controls is "CPU".   In a multithreaded…
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 navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
Suggested Courses

650 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