我有一个图书馆;称之为libdog.so
。
我没有libdog.so
的来源。
我没有进入.o
的{{1}}个文件。
libdog.so
libdog取决于libdogfood。
我有一个静态dogfood库,ldd libdog.so
libdogfood.so.1 => not found
和libdogfood.a
。
我想创建一个新的库libdogfood.la
,它没有
对libdogfood的依赖。
我希望libcompletedog包含libdogfood中的所有符号。
答案 0 :(得分:2)
大多数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
编译的),但这有点不太可能。
答案 1 :(得分:0)
基本上你不能这样做,因为libdog.so
是用-fPIC
编译的,而libdogfood.a
则不是。共享库(实际上)只需要包含position independent code
(否则内部的重定位信息太多)