Advertencias del linker de visibilidad al comstackr la aplicación iOS que utiliza Boost

Mi aplicación de iOS utiliza una biblioteca que a su vez depende de Boost. Al renovar el sistema de compilation 3rdparty, encontré advertencias de linker como este

ld: warning: direct access in ___cxx_global_var_init to global weak symbol std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream() means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings. 

y esto

 ld: warning: direct access in __GLOBAL__I_a to global weak symbol boost::exception_ptr::~exception_ptr() means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings. 

Vi que hay algunas otras preguntas sobre SO con respecto a esta advertencia. Seguí su consejo y me aseguré de que las configuraciones de visibilidad en todas las comstackciones -fvisibility=hidden las mismas ( -fvisibility=hidden y -fvisibility-inlines-hidden ). Después de una reconstrucción completa todavía recibí las advertencias.

Ambiente:

  • Xcode 4.6.0
  • iOS SDK 6.1
  • Building Boost usando un clon modificado del popular script de construcción galbraithjosephs-boostoniphone
  • Boost versión 1.54.0
  • Construcción con -std=c++11 -stdlib=libc++

El problema era que el script de compilation de Boost usaba clang++ como el comstackdor, pero la otra biblioteca y mi propia aplicación de iOS usaban clang (la otra biblioteca y mi aplicación son proyectos Xcode en los que las comstackciones se hacen con clang ).

Las advertencias desaparecieron después de rebuild Boost con el clang .

Lo triste es que no sé exactamente por qué esto ayudó. Soy consciente de que comstackr con clang++ cambia el comstackdor al modo C ++, activando / desactivando ciertas configuraciones. ¡Pero ciertamente no puede significar que usar clang++ anula la configuration de visibilidad que se especifica explícitamente en la línea de command ?! Los comentarios o las respuestas adicionales que explican el comportamiento son bienvenidos.