我有图书馆;称之为libdog.so
我没有libdog.so的来源。
我没有进入.olibdog.so文件。

ldd libdog.so
libdogfood.so.1 => not found

libdog依赖libdogfood。
我有一个静态的dogfood库libdogfood.alibdogfood.la

我想创建一个新的库libcompletedog.so,它没有
对libdogfood的依赖。

我希望libcompletedog包含libdogfood中的所有符号。

最佳答案

大多数UNIX系统(AIX除外)都将.so库视为链接的“最终”产品,该产品无法重新链接到其他内容。

如果libdogfood.a是32位库,则可以将其链接到libdogfood.so.1,从而满足缺少的依赖关系:

gcc -shared -o libdogfood.so.1 \
 -Wl,--whole-archive libdogfood.a -Wl,--no-whole-archive

如果libdogfood.a包含64位对象,则上面的方法仍然可行(如果对象是使用-fPIC编译的),但这不太可能。

关于c - 如何将共享库(.so)和静态库(.a)合并为新的共享库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8365233/

10-10 17:39