gpt4 book ai didi

linux - 将共享对象中的符号解析为可执行文件

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

我如何创建一个可执行文件来动态加载共享对象并将其 undefined symbol 解析为可执行文件本身?在 Linux 上。

比如共享对象有

extern int a;
void f() { a=1; }

可执行文件有

int a;

我想从可执行文件中调用 f() 并更改 a 的值。

谢谢。

最佳答案

来自 dlopen 手册页:

External references in the library are resolved using the libraries in that library's dependency list and any other libraries previously opened with the RTLD_GLOBAL flag. If the executable was linked with the flag "-rdynamic" (or, synonymously, "--export-dynamic"), then the global symbols in the executable will also be used to resolve references in a dynamically loaded library.

因此,使用 -rdynamic 重新编译您的主应用程序应该会有所帮助。

关于linux - 将共享对象中的符号解析为可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24015025/

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