【发布时间】:2014-09-11 21:48:49
【问题描述】:
我有两个共享库 libA 和 libB,我想创建一个新的库 libC,它链接到这两个库,所以我可以用 -lC 而不是 -lA 和 -lB 链接我的应用程序。 我不能使用 -lA 和 -lB 之一,否则我必须修复许多包。
libB 是预编译的二进制文件。
我试图运行这个:
gcc -fPIC -shared -o libA.so A.c
gcc -shared -Wl,--no-as-needed -L. -lA -lB -o libC.so
但是当我链接我的应用程序时,需要 libB 和 -lC I
App.o: undefined reference to symbol 'SymbolInB'
note: 'SymbolInB' is defined in DSO libB.so 所以尝试将其添加到链接器命令行
libB.so: could not read symbols: Invalid operation
如果我运行 readelf -a libB.so,我在 .dynsym 中看到 SymbolInB,它在 libC.so 中丢失了。所以我假设我错过了正确解析符号的链接选项?
【问题讨论】: