Linking problem while linking to shared library

Hi
I'm getting

ld: fatal: option -h and building a dynamic executable are incompatible
ld: fatal: Flags processing errors

When I run

ld -shared -L/usr/dt/lib -lDtSvc -o builtin.so Workspace.o

after running

gcc -fPIC -I/usr/X11R6/include -I/usr/dt/include -c Workspace.c

I'm running on
SunOS RELEASE: 5.8
ld: Software Generation Utilities - Solaris-ELF (4.0)
gcc, g++ - GNU project C and C++ Compiler (gcc-2.95)

Can anyone please help me!!!

BR Lars

There is no such thing as -shared. ld sees that as -s -h ....

Do you mean -G?

Hi Perderabo
Yes I meant -G, the -shared was an option I found while I was searching with "ask jeewes for shared libraries. Yes I meant -G, the -shared was an option I found while I was searching with "ask jeewes"

BR Lars

Hi, iam Mani

You can try with the Option -Wl,-shared for linking..

try it

all the best.

Hi
I don't have the option -W in my version of ld
BR Lars

not -W try for -Wl ok..

Hi
What I did was
ld -Wl -L/usr/dt/lib -lDtSvc -o builtin.so Workspace.o
and then I got
ld: illagal option -- W
usage: ld [-6:abc:d:e:f:h:il:mo:p:rstu:z:B:D:F:GI:L:M:N:P:Q:R:S:VY:?] file(s)
[-64] enforce a 64-bit link-edit
[-a] create an absolute file
[-b] do not do special PIC relocations in a.out
[-c file] record configuration `file'
[-d y|n] operate in dynamic|static mode
[-e sym] use `sym' as entry point address
[-f name] specify library for which this file is an auxiliary
filter
[-h name] use `name' as internal shared object identifier
[-i] ignore LD_LIBRARY_PATH setting
[-l x] search for libx.so or libx.a
[-m] print memory map
[-o outfile] name the output file `outfile'
[-p name] identify audit object to accompany this object
[-r] create a relocatable object
[-s] strip any symbol and debugging information
[-t] do not warn of multiply-defined symbols that have
different sizes or alignments
[-u sym] create an undefined symbol `sym'
[-z absexec] when building an executable absolute symbols
referenced in dynamic objects are promoted to
the executable
[-z now] mark object as requiring non-lazy binding
[-z defs|nodefs]
disallow|allow undefined symbols
[-z endfiltee] marks a filtee such that it will terminate a filters
search
[-z groupperm|nogroupperm]
enable|disable setting of group permissions
on dynamic dependencies
[-z ignore|record]
ignore|record unused dynamic dependencies
[-z initfirst] mark object to indicate that its .init section should
be executed before the .init section of any other
objects
[-z loadfltr] mark filter as requiring immediate loading of its
filtees at runtime
[-z interpose] dynamic object is to be an `interposer' on
direct bindings
[-z lazyload|nolazyload]
enable|disable delayed loading of shared objects
[-z muldefs] allow multiply-defined symbols
[-z nodefaultlib]
mark object to ignore any default library search path
[-z nodelete] mark object as non-deletable
[-z nodlopen] mark object as non-dlopen()'able
[-z nodump] mark object as non-dldump()'able
[-z nopartial] expand any partially initialized symbols
[-z noversion] don't record any version sections
[-z origin] mark object as requiring $ORIGIN processing
[-z redlocsym] reduce local syms in .symtab to a minimum
[-z text] disallow output relocations against text
[-z textwarn] warn if there are relocations against text
[-z textoff] allow output relocations against text
[-z verbose] generate warnings for suspicious processings
[-z weakextract]
allow extraction of archive members to resolve weak
references
[-z allextract] extract all member files from archive files
[-z defaultextract]
extract member files from archive files
which resolve undefined or tentative symbols
[-z combreloc] combine multiple relocation sections
[-B dynamic|static]
search for shared libraries|archives
[-B group] relocate object from within group
[-B eliminate] eliminate unqualified global
symbols from the symbol table
[-B local] reduce unqualified global symbols to local
[-B reduce] process symbol reductions
[-B symbolic] bind external references to definitions when creating
shared objects
[-B direct] specify `direct' bindings for executable when run
[-D options] print diagnostic messages
[-F name] specify library for which this file is a filter
[-G] create a shared object
[-I interp] use `interp' as path name of interpreter
[-L path] search for libraries in directory `path'
[-M mapfile] use processing directives contained in `mapfile'
[-N file] create a dynamic dependency on `file'
[-P name] identify audit object for processing the dependencies
of this object
[-Q y|n] do|do not place version information in output file
[-R path] specify a library search path to be used at run time
[-S name] specify a link-edit support library
[-V] print version information
[-Y P,dirlist] use `dirlist' as a default path when searching for

I disabled smilies in this post so that the usage statement could be read. -- Perderabo