我知道如何使用dlsym()
来查找由字符串键入的符号 - 当这些符号由我dlopen()
编辑的共享库导出时。但是 - 其他代码怎么样?只是对象代码我静态链接。是否有可能以某种方式查找符号?
备注:
答案 0 :(得分:3)
您确实可以将dlsym()
用于此目的。您只需将所有符号导出到动态符号表即可。将二进制文件与gcc -rdynamic
链接起来。
示例:
#include <stdio.h>
#include <dlfcn.h>
void foo (void) {
puts("foo");
}
int main (void) {
void (*foo)(void) = dlsym(NULL, "foo");
foo();
return 0;
}
编译:{{1}}
gcc -rdynamic -O2 dl.c -o dl -ldl