我有图书馆;称之为libdog.so
。
我没有libdog.so
的来源。
我没有进入.o
的libdog.so
文件。
ldd libdog.so
libdogfood.so.1 => not found
libdog依赖libdogfood。
我有一个静态的dogfood库
libdogfood.a
和libdogfood.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/