调用主可执行函数的共享库上的符号查找错误未定义符号

问题描述 投票:0回答:2

我有一个已经编译好的 Linux 可执行文件,它加载“libA.so”

我在可执行文件上使用 elfpatch 添加另一个所需的库“libB.so”

在我的 libB.so 上,我可以毫无问题地调用 LibA.so 中存在的任何函数。但是,如果我尝试从主可执行文件调用函数,我会得到“符号查找错误未定义符号”

有没有办法编译 libB.so 来访问主可执行文件中的函数?或者我唯一的选择是使用 dlopen 访问该函数?

c++ linux gcc shared-libraries
2个回答
1
投票

有没有办法编译libB.so来访问主可执行文件中的函数?

如果不重建主要可执行文件就不行。解释这里

或者我唯一的选择是使用 dlopen 访问该函数?

这不是一个选项,如果未从主可执行文件导出该函数,

dlopen
无法在主可执行文件中找到该函数。


0
投票

回答我的老问题,我认为在这个项目中,我能够通过地址从主可执行文件中调用函数,字面上是通过我正在工作的linux项目中的地址,主可执行文件总是加载在相对地址中,所以我只使用了 IDA ,得到了函数的正确地址,用绝对地址构建了函数的定义,并且它起作用了。如果不使用一些奇特的内存地址,也可以在 win32 中工作。

© www.soinside.com 2019 - 2024. All rights reserved.