CMake: Lier statiquement contre libgcc et libstdc++ dans une bibliothèque partagée
Problème:
J'ai des problèmes de liaison glibcc/glibc++ dans une bibliothèque partagée à l'aide de CMake et GCC4.9 sur mon Ubuntu 16.04 installation.
Conditions supplémentaires:
Chargement de la bibliothèque partagée donne un problème om Red Hat environnement de production(où je l'ai copier), je crois parce qu'il utilise un autre libstc++ version(erreur: GLIBCXX_3_4_20 pas trouvé). Je n'ai pas de sudo droits et impossible de mettre à niveau la machine.
Que j'ai tiré de cette blog, ce post, j'ai essayé de relier la liaison statique contre libgcc et libgc++ à l'aide de:
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
et againg à l'aide de
set(CMAKE_SHARED_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
Mais qui ne fonctionne pas. Ce ne travail est-ce CMake script:
add_library(myLib SHARED ${SOURCE_FILES})
set(CMAKE_EXE_LINKER_FLAGS " -static")
target_link_libraries(myLib -static-libgcc -static-libstdc++)
Ce doit être de la mauvaise façon de le faire, à ma connaissance -static-libgcc et -statique-libstdc++ sont des options du linker et pas de bibliothèques...
Question:
Comment puis-je lier statiquement contre -libgcc et -libstdc++ correctement?
Merci d'avance!
OriginalL'auteur DA-- | 2016-08-01
Vous devez vous connecter pour publier un commentaire.
Oui,
target_link_libraries
est un bonne façon de définir l'éditeur de liens drapeaux ou options du linker.Documentation de
target_link_libraries
:https://cmake.org/cmake/help/v3.0/command/target_link_libraries.html (les italiques sont pas dans l'original)
OriginalL'auteur SpamBot