I have a project where I have one static library libhelper.a and another with my actual shared object library, libtestlib.so. My goal is to link libhelper.a into libtestlib.so. Is that possible on Linux/BSD? When I tried and created a test program I got the following errors:
./prog1:/usr/local/lib/libtestlib.so.1.0: undefined symbol ”
My guess is that this is occurring because libhelper.a was not compiled with -fPIC while libtestlib.so was. What is the proper way to build programs that use shared libraries that also have dependancies on static libraries?
Thanks!
Sure. This should do:
It’s best to rebuild libhelper.a with
-fPIC. If that’s not possible, above command will still work onLinux/ix86, but not on e.g.Linux/x86_64.If you include
libhelper.aintolibtestlib.soas above, then simple:is all you need. If you insist on linking with
libhelper.a, then you must tell the end-user that he must link with e.g.There is no way to specify that
libtestlib.sodepends onlibhelper.a.