Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss
Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Compiling Shared Objects on Linux with gcc 2.7.2.1

1 view
Skip to first unread message

fi...@s09.es.llnl.gov

unread,
Jul 17, 1997, 3:00:00 AM7/17/97
to

I am trying to compile a shared object library using the -shared option
with gcc 2.7.2.1 on a linux machine. It gives me a segmentation fault.
Is it possible to create a shared object library on linux with gcc?

-------------------==== Posted via Deja News ====-----------------------
http://www.dejanews.com/ Search, Read, Post to Usenet

Fergus Henderson

unread,
Jul 20, 1997, 3:00:00 AM7/20/97
to

fi...@s09.es.llnl.gov writes:

>I am trying to compile a shared object library using the -shared option
>with gcc 2.7.2.1 on a linux machine. It gives me a segmentation fault.

What does, gcc, or your application?
If your app gets a segmentation fault, the problem may be that
you forgot to compile your library with `-fpic'.

>Is it possible to create a shared object library on linux with gcc?

Yes. The method is documented in the HOWTO for ELF, I think.

--
Fergus Henderson | Designing grand concepts is fun;
f...@cs.mu.oz.au | finding nitty little bugs is just work.
http://www.cs.mu.oz.au/~fjh | -- Brooks, in "The Mythical Man-Month".
PGP key fingerprint: 00 D7 A2 27 65 09 B6 AC 8B 3E 0F 01 E7 5D C4 3F

Jeremy Mathers

unread,
Jul 21, 1997, 3:00:00 AM7/21/97
to

In article <5qsaoj$g...@mulga.cs.mu.OZ.AU>,

Fergus Henderson <f...@cs.mu.OZ.AU> wrote:
>fi...@s09.es.llnl.gov writes:
>
>>I am trying to compile a shared object library using the -shared option
>>with gcc 2.7.2.1 on a linux machine. It gives me a segmentation fault.
>
>What does, gcc, or your application?
>If your app gets a segmentation fault, the problem may be that
>you forgot to compile your library with `-fpic'.
>
>>Is it possible to create a shared object library on linux with gcc?
>
>Yes. The method is documented in the HOWTO for ELF, I think.

The attached document contains everything you need to know about creating
and using shared libs under Linux (and Solaris); this is taken directly from
the ELF HOWTO with a few edits/additions by yours truly.

The steps involved in doing a shared library:

1) cat lfoo.c
hello() { puts("hello, world"); }

2) gcc -fPIC -c lfoo.c

3) gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 lfoo.o
3a) Note: To do the same thing on the Sun (Solaris), use the native ld, thusly:

ld -G -h libfoo.so.1 -o libfoo.so.1 lfoo.o

4) ln libfoo.so.1.0 libfoo.so.1;ln libfoo.so.1.0 libfoo.so

5) cat bar.c
extern hello();
main() { hello(); }

6) gcc -s -o bar bar.c -L. -lfoo

7) sh -c 'LD_LIBRARY_PATH=. ./bar'
hello, world

************************************************************************
My version of Shakespeare, as applied to traffic safety:
First thing we do is kill all the cabdrivers!

- py...@quads.uchicago.edu, who is still costing the net
hundreds, if not thousands, of dollars, every time he posts -
************************************************************************
rwvpf wpnrrj ibf ijrfer

0 new messages