Hi,
I have two C static libraries libA
and libB
that I link against my executable E
.
libA
has a function that makes a call to a function that is in libB
:
myLibAFunctionThatCallsAfunctionInLibB( ... )
{ libB_function(...); }
Both libraries compile fine. My executable E
also compiles fine. E
is compiled with gcc using -lA -lB
flags with the proper -I
and -L
paths.
The problem occurs at runtime when myLibAFunctionThatCallsAfunctionInLibB
is called. I get the following error:
dyld: lazy symbol binding failed: Symbol not found: _libB_function
Referenced from: libA.dylib
Expected in: flat namespace
I have checked that all architectures are the same (i386). Also nm -a libB.a
shows that libB_function
is actually part of libB
. I have tried declaring libB_function(...);
as extern
in libA
with no difference. I am using gcc 4.2.1 on osx 10.6 if that's of any incidence.
Is it just not possible to cross reference libraries the way I am trying to do it? Do I HAVE to include the implementation code for libB_function
in my libA
library?
Thanks
Baba