这可能无法实现,但是我想做一些类似于在链接时构建vtable的事情。也就是说,首先,我想在单独的目标文件中独立发出各种功能符号。然后,我希望链接器构建一个表,在该表中顺序添加符号,并能够引用该表中的条目。
我研究了如何滥用链接脚本和/或重定位条目来构建该表,但是找不到任何令人满意的解决方案。
您见过这样的事情吗?关于如何实现这一目标的任何提示?
答案 0 :(得分:2)
我找不到令人满意的解决方案。
假设您分别定义a.o
,b.o
和c.o
的{{1}},a()
和b()
。
创建并编译此源:
c()
现在将它们链接在一起:
// table.c
extern void a(), b(), c();
void (*table[])() = { &a, &b, &c, 0 };
Voila:您有一个表格,其中所有符号均按顺序添加。