--export-dynamic question

Toon Knapen toon.knapen@fft.be
Tue Aug 31 11:54:00 GMT 2004


I would suspect the symbols defined in the static libraries that I link 
into my executable to appear in the final exe when the --export-dynamic 
option is passed on the command-line. However my findings proove 
otherwise (using redhat 8, ld version 2.13.90.02)

Using following files:

<begin foo.cpp>
int foo()
{ return 99 ; }
<end foo.cpp>

<begin main.cpp>
int main()
{ return 0 ; }
<end main.cpp>

I do:

gcc -c foo.cpp
gcc -c main.cpp
ld main.o foo.o

If I now 'nm a.out', I clearly see the function 'foo' in my a.out.

Now I first put the foo.o object-file into a library and then link the 
library into the exe like so:

ar ru libfoo.a foo.o
ld main.o libfoo.a

Now the function foo does not appear anymore when I 'nm a.out' (as 
expected since it is dead code)

Now however I link a.out using following command-line:

ld --export-dynamic main.o libfoo.a

And the funtion foo does not appear either (although I would expect the 
export-dynamic flag to prevent the dead-code elimination) ?

Thanks in advance,

Toon



More information about the Binutils mailing list