Al usar gcc para compilar una biblioteca compartida, es posible limitar la visibilidad de los símbolos usando -fvisibility = hidden. También me acabo de enterar de que puedes limitar la visibilidad usando la opción de script de versión en ld.versión-script y visibilidad oculta
Ahora quiero saber si es posible combinar estos. Decir que tengo un programa con el siguiente:
void foobar() {}
void say_hello() {}
Entonces tengo el archivo de script versión con:
{
global:
foobar;
}
Y Compilo esto con: -fvisibility gcc = hidden -Wl, - versión -script = test.c -shared -o libtest.so
Cuando ejecuto nm en esto después, me parece que no se exportan símbolos. ¿Hay alguna forma de que pueda establecer la visibilidad predeterminada en oculto y usar el script de versión (u otra cosa) para exportar símbolos?
Dado que el código que necesito utilizar esto en usos __attribute __ ((visibilidad ("default"))) en el código para marcar la visibilidad a veces, pero a veces se basa en el guión enlazador. La forma en que esto se maneja en este momento es simplemente un hack gigante y estoy tratando de averiguar si hay una mejor manera de hacerlo. –
Su pregunta * aún * no tiene ningún sentido. Es posible que desee tratar de explicar cuál es la mejor pregunta * real *. –