非动态加载代码的类似 dlsym 的功能?

dlsym-like functionality for non-dynamically-loaded code?

我知道如何使用 dlsym() 查找由字符串键入的符号 - 当这些符号由我 dlopen() 编辑的共享库导出时。但是 - 其他代码呢?只是我静态链接的目标代码。是否有可能以某种方式查找符号?

备注:

您确实可以为此目的使用 dlsym()。您只需将 所有 符号导出到动态符号 table。 Link 带有 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;
}

编译为:gcc -rdynamic -O2 dl.c -o dl -ldl

$ ./dl
foo
$