我的目标是将libhelper.a链接到libtestlib.so。在Linux上有可能吗?
当然。应该这样做:
gcc -shared -fPIC -o libtestlib.so $(OBJS) -Wl,--whole-archive -lhelper -Wl,--no-whole-archive
libhelper.a未使用-fPIC编译
最好使用重建libhelper.a
-fPIC。如果那不可能,上面的命令仍然可以使用
Linux/ix86,但是不能在eg上使用
Linux/x86_64。
使用共享库(也依赖于静态库)来构建程序的正确方法是什么?
如果包括
libhelper.a到
libtestlib.so如上,那么简单:
gcc main.c -ltestlib
是你所需要的全部。如果您坚持与链接
libhelper.a,那么您必须告诉最终用户他必须与链接,例如
gcc main.c -ltestlib -lhelper
无法指定
libtestlib.so取决于
libhelper.a。



