When using gcc
to build a shared library, it's possible to limit the visibility of the symbols using -fvisibility=hidden
. I also just learned you can limit visibility using the version-script option to ld
.
Now I want to know if it's possible to combine these. Say I have a program with the following:
void foobar() {}
void say_hello() {}
Then I have the version script file with:
{
global:
foobar;
}
And I compile this with:
gcc -fvisibility=hidden -Wl,--version-script=<version-script> test.c -shared -o libtest.so
When I run nm
on this afterwards, I find that no symbols are exported. Is there anyway that I can set the default visibility to hidden and use the version-script (or something else) to export symbols?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…