Tengo una biblioteca compartida que se supone que exporta solo una función que está marcada con __attribute__ ((visibility ("default")))
. También enlaza con otra biblioteca estática (fftw), ymingw -fvisibility = hidden no parece funcionar
#include<fftw3.h>
va precedido de:
#pragma GCC visibility push(hidden)
comando de enlace utilizado:
g++.exe -fvisibility=hidden -shared -o mylib.dll -Wl,--out-implib,mylib.dll.a -Wl,--no-whole-archive libfftw3.a libfftw3_omp.a -lgomp
Ahora la biblioteca resultante es enorme y si Compruebo las funciones exportadas, incluye TODAS las funciones de fftw y TODAS las funciones de mis archivos. Parece que mingw ignora las opciones de visibilidad. Leí que anteriormente daba una advertencia sobre -fvisibility
, pero ahora compila sin advertencias de ningún tipo.
¿Mingw y gcc 4.6.1 admiten banderas de visibilidad? Si es así, ¿cómo me deshago de todas las cosas innecesarias en mi biblioteca compartida?