Executable shared object

Eljay Love-Jensen eljay@adobe.com
Wed Jul 16 21:44:00 GMT 2003


Hi Pradyuman,

The resulting file is not runnable.  Segv.

The resulting file is not usable as a shared library.

Or I could be doing something wrong.

--Eljay

- - - -

> ld -o libfoo.so foo.o -dy -ldl -lc
ld: warning: cannot find entry symbol _start; defaulting to 0000000000010250

> ./libfoo.so
Segmentation Fault (core dumped)

> gcc bar.c -L. -lfoo
./libfoo.so: In function `main':
./libfoo.so(.text+0x38): multiple definition of `main'
/var/tmp//cc0OamYZ.o(.text+0x0): first defined here
/gcc-3.2/sparc-sun-solaris2.8/bin/ld: Warning: size of symbol `main' changed from 28 to 52 in ./libfoo.so
./libfoo.so: In function `*ABS*':
foo.c(*ABS*+0x203e0): multiple definition of `_GLOBAL_OFFSET_TABLE_'
/net/mn-spam/export/share/gcc-3.2/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtbegin.o(.got+0x0): first defined here
/net/mn-spam/export/share/gcc-3.2/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtbegin.o(.dynamic+0x0): multiple definition of `_DYNAMIC'
/net/mn-spam/export/share/gcc-3.2/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtbegin.o(.plt+0x0): multiple definition of `_PROCEDURE_LINKAGE_TABLE_'
collect2: ld returned 1 exit status

> cat foo.c
#include <stdio.h>
void Kickme() {
    printf("Kickme.\n");
    }
int main() {
    printf("MAIN: Kick me.\n");
    }

> cat bar.c
extern void Kickme();
int main() {
    Kickme();
    } 



More information about the Gcc-help mailing list