我已經編譯了一個C++程序,它完全可以在我的電腦上運行,但是如果我的朋友試圖啓動程序,它說缺少libgcc_s_sw2-1.dll
。我如何在使用CMake的程序中包含所有需要的GCC運行時庫?如何使用CMake安裝GCC運行時庫?
3
A
回答
3
由於rubenvb正確回答:libgcc是必需的,或者您應該將CMAKE_EXE_LINKER_FLAGS=-static
添加到您的CMakeLists.txt中。
作爲一種替代方法,您可以嘗試在MinGW安裝中找到libgcc_s_sw2-1.dll,並使用InstallRequiredSystemLibraries進行安裝並將其「打包」。這與CPack很好地集成在一起。
E.g.在我自己的代碼,我有:
if(MINGW)
message(STATUS " Installing system-libraries: MinGW DLLs.")
get_filename_component(Mingw_Path ${CMAKE_CXX_COMPILER} PATH)
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${Mingw_Path}/mingwm10.dll ${Mingw_Path}/libgcc_s_dw2-1.dll ${Mingw_Path}/libstdc++-6.dll)
endif(MINGW)
include(InstallRequiredSystemLibraries)
後來,在準備安裝或包中的一部分:
# Actually install it when make install is called.
# Note, this works with CPack
if(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin COMPONENT System)
endif(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
3
所有使用GCC編譯的程序都需要libgcc dll。如果你不想重新發布與程序這個DLL,你必須通過-static
到鏈接靜態鏈接,或CMake的:
CMAKE_EXE_LINKER_FLAGS=-static
這是具體的GCC。
相關問題
- 1. 用incredibuild運行CMake安裝目標
- 2. 如何配置CMake以使用新安裝的GCC編譯器進行構建?
- 3. GCC庫Cygwin安裝
- 4. 如何爲庫編寫cmake安裝?
- 5. 如何使用CMake安裝腳本?
- 6. 如何使用cmake安裝opencv2.4.6
- 7. cmake安裝不在Windows上安裝庫
- 8. gcc:如何鏈接MacPorts安裝的庫?
- 9. 使用CMake安裝Gtest
- 10. 如何安裝opencv和cmake
- 11. 在CMake中,如何在目標安裝後運行腳本?
- 12. 如何使用cmake調試gcc代碼
- 13. 當運行GCC/G ++,如何分辨它它被安裝在
- 14. 安裝Xcode 4.3.2並缺少gcc時如何使用RVM安裝Ruby 1.9.3?
- 15. 如何在安裝VS2010時使用CMAKE for Windows-SDK編譯器?
- 16. 用Cmake安裝SFGUI
- 17. 如何使用gcc使用pari庫運行C程序?
- 18. 使用動態庫運行cmake項目
- 19. 如何從Java運行時安裝.pkg?
- 20. 如何使用命令行在mac上安裝gcc?
- 21. 使用WiX自動安裝運行時庫
- 22. 要使用哪個數據庫以及如何在安裝時進行安裝?
- 23. 如何運行/安裝xcodebuild?
- 24. CMake安裝
- 25. Cmake和gcc結合使用
- 26. cmake在安裝mysql時不起作用
- 27. 使用gcc鏈接到使用Homebrew安裝的動態庫?
- 28. 安裝GCC-FORTRAN
- 29. 安裝GCC 4.2.4
- 30. 安裝GCC 4.8.2
注意的MinGW-W64沒有'mingwm10.dll',和他們通常會提供'libgcc_s_sjlj-1.dll',而x64的GCC 4.8默認會有'libgcc_s_seh-0.dll'。 libgcc的自動打包依賴於構建系統。 – rubenvb
@rubenvb。誠然,我認爲你的解決方案是更好的解決方案。但在那些用戶確實希望將libgcc作爲dll構建的情況下,至少在CMake中可以收集所有這些與系統相關的文件。在我自己的項目中,我甚至爲MinGW,VS2008和VS2010編寫了一個小腳本。 –