作为学习的一部分,我正在尝试将两个静态库合并为一个共享库。按照我用来准备静态库的命令序列
$ 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
但这会带来很多多重定义错误。
答案 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