Linker 在链接时将多个对象文件中的符号连接到一个表中(例如vtable)

Linker 在链接时将多个对象文件中的符号连接到一个表中(例如vtable),linker,vtable,object-files,Linker,Vtable,Object Files,这可能是不可能的,但我想做一些类似于在链接时构建vtable的事情。也就是说,首先我想在单独的对象文件中独立地发出各种函数符号。然后,我希望链接器构建一个表,其中按顺序添加符号,并能够引用该表中的条目 我已经研究过如何滥用链接器脚本和/或重新定位条目来构建该表,但我找不到任何令人满意的解决方案 你见过这样的事情吗?关于如何做到这一点,有什么建议吗 我找不到任何令人满意的解决办法 假设您分别有a.o、b.o和c.o定义a()、b()和c() 创建并编译此源代码: // table.c extern

这可能是不可能的,但我想做一些类似于在链接时构建vtable的事情。也就是说,首先我想在单独的对象文件中独立地发出各种函数符号。然后,我希望链接器构建一个表,其中按顺序添加符号,并能够引用该表中的条目

我已经研究过如何滥用链接器脚本和/或重新定位条目来构建该表,但我找不到任何令人满意的解决方案

你见过这样的事情吗?关于如何做到这一点,有什么建议吗

我找不到任何令人满意的解决办法

假设您分别有
a.o
b.o
c.o
定义
a()
b()
c()

创建并编译此源代码:

// table.c
extern void a(), b(), c();
void (*table[])() = { &a, &b, &c, 0 };
现在将它们链接在一起:

ld -r -o foo.o a.o b.o c.o table.o
瞧,你有一个表,其中所有符号都是按顺序添加的