gpt4 book ai didi

c - 将两个共享库链接在一起 - undefined symbol 引用

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:29 25 4
gpt4 key购买 nike

我有两个共享库 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'

注意:'SymbolInB' 在 DSO libB.so 中定义 所以尝试将它添加到链接器命令行

libB.so: could not read symbols: Invalid operation

如果我运行 readelf -a libB.so,我会在 .dynsym 中看到 SymbolInB,它在 libC.so 中丢失了。所以我假设我错过了正确解析符号的链接选项?

最佳答案

这样不行。 libC 中的函数可以正常使用libAlibB 中的函数,因为libC 与其他库链接.但是,libAlibB 中的那些符号不会从 libC 中导出,因此如果您的应用程序直接使用 libB 中的函数 然后你需要链接到 libB

关于c - 将两个共享库链接在一起 - undefined symbol 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24864259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com