如何将两个静态库合并到单个共享库中

时间:2018-11-04 18:21:53

标签: c++ gcc compilation linker

作为学习的一部分,我正在尝试将两个静态库合并为一个共享库。按照我用来准备静态库的命令序列

  

$ gcc -c mathutil.cpp -o mathutil.o

     

$ ar rcs libmathutil.a mathutil.o

     

$ gcc -c dateutil.cpp -o dateutil.o

     

$ ar rcs libdateutil.a dateutil.o

有人可以告诉我如何将这两个静态库合并为一个共享库。

我尝试了以下命令

  

gcc -Wl,-完整归档-共享libutil.so libmathutil.a

但这会带来很多多重定义错误。

1 个答案:

答案 0 :(得分:0)

如果您有源文件,为什么不直接将它们编译到共享库中呢?在您的编译行中添加-fPIC标志(PIC =位置无关代码),然后链接诸如:

编译文件:

gcc -c -fPIC mathutil.cpp -o mathutil.o
gcc -c -fPIC dateutil.cpp -o dateutil.o

创建共享库:

gcc -shared dateutil.o mathutil.o -o bin/shared/libutil.so