CMake: Vinculación estática contra libgcc y libstdc ++ en una biblioteca compartida
Problema
Tengo problemas para vincular glibcc / glibc ++ en una biblioteca compartida usando CMake y GCC4.9 en mi instalación de Ubuntu 16.04.
Condiciones adicionales
Cargar la biblioteca compartida genera un problema en el entorno de producción de Red Hat (donde lo copio), creo que porque usa una versión diferente de libstc ++ (error: GLIBCXX_3_4_20 no encontrado). No tengo derechos de sudo y no puedo actualizar la máquina.
Como derivado deest blog, esteenvia, Intenté vincular enlaces estáticos contra libgcc y libgc ++ usando:
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
y contra usando
set(CMAKE_SHARED_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
Pero eso no funciona. Quéhac work es este script de CMake:
add_library(myLib SHARED ${SOURCE_FILES})
set(CMAKE_EXE_LINKER_FLAGS " -static")
target_link_libraries(myLib -static-libgcc -static-libstdc++)
Esta debe ser la forma incorrecta de hacer esto, que yo sepa -static-libgcc y -static-libstdc ++ son opciones de enlazador y no bibliotecas ...
Pregunt: ¿Cómo puedo vincular estáticamente contra -libgcc y -libstdc ++ correctamente?
¡Gracias por adelantado