1. -fPIC选项

所有作为输入的目标文件和静态库在编译时必须添加了-fPIC选项,才能生成动态库。

2. 生成动态链接库

使用g++命令把多个静态库和目标文件生成动态库

1
2
3
4
5
6
7
g++ -Wl,--whole-archive -l:<libfirst.a> -l:<libsecond.a> ...
-Wl,--no-whole-archive
-l:<libthird.a> ...
<object_first.o> <object_second.o> ...
-Wl,-L<lib_path>
-shared
-o <libshared.so>
  1. -Wl,--whole-archive后指定需要包括其中所有目标文件的库

  2. -Wl,--no-whole-archive用以取消-Wl,--whole-archive的后续作用

  3. -Wl,-L<lib_path>用以添加库文件查找目录

  4. -shared表明此次链接要创建一个动态库

  5. -o <libshared.so>指定要创建的动态库文件名