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
Solved

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

Posted on 2001-06-05
4
1,284 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
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 75 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 20

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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

Let's say you need to move the data of a file system from one partition to another. This generally involves dismounting the file system, backing it up to tapes, and restoring it to a new partition. You may also copy the file system from one place to…
FreeBSD on EC2 FreeBSD (https://www.freebsd.org) is a robust Unix-like operating system that has been around for many years. FreeBSD is available on Amazon EC2 through Amazon Machine Images (AMIs) provided by FreeBSD developer and security office…
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…
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…

856 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