Can I build a shared library by linking static lib

2019-01-23 07:25发布

I have a bunch of static libraries (*.a), and I want to build a shared library (*.so) to link against those static libraries (*.a). How can I do so in gcc/g++?

2条回答
【Aperson】
2楼-- · 2019-01-23 07:40

You can (just extract all the .o files and link them with -shared to make a .so), but whether it works, and how well it works, depends on the platform and whether the static library was compiled as position-independent code (PIC). On some platforms (e.g. x86_64), non-PIC code is not valid in shared libraries and will not work (actually I think the linker will refuse to make the .so). On other platforms, non-PIC code will work in shared libraries, but the in-memory copy of the library is not sharable between different programs using it or even different instances of the same program, so it will result in HUGE memory bloat.

查看更多
闹够了就滚
3楼-- · 2019-01-23 07:54

I can't see why you couldn't just build the files of your dynamic library to .o files and link with;

gcc -shared *.o -lstaticlib1 -lstaticlib2 -o mylib.so
查看更多
登录 后发表回答