In Linux/ELF you can pass the -export-dynamic
option to the linker (-rdynamic
on the compiler driver gcc
) so symbols from the executable are exported to shared objects.
You'd have a dummy print
implementation in your library, which would be shadowed by the implementation on your executable, since the executable is usually searched before shared objects for symbol resolution.
This has the disadvantage that it's not very fine-grained, you could end up overriding some symbol you didn't intend to. The finer-grained option would be to create a list of symbols to be exported as:
{
print;
<other symbols>
};
and pass that list to the linker, e.g. from gcc: -Wl,--dynamic-list=<file with list of symbols>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…