我已经编译了一个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. GCC库Cygwin安装
- 2. 如何为库编写cmake安装?
- 3. 如何使用cmake安装opencv2.4.6
- 4. 如何使用CMake安装脚本?
- 5. cmake安装不在Windows上安装库
- 6. gcc:如何链接MacPorts安装的库?
- 7. 使用CMake安装Gtest
- 8. 如何安装opencv和cmake
- 9. 在CMake中,如何在目标安装后运行脚本?
- 10. 如何使用cmake调试gcc代码
- 11. 如何在安装VS2010时使用CMAKE for Windows-SDK编译器?
- 12. 用Cmake安装SFGUI
- 13. 安装Xcode 4.3.2并缺少gcc时如何使用RVM安装Ruby 1.9.3?
- 14. 使用动态库运行cmake项目
- 15. 如何使用命令行在mac上安装gcc?
- 16. 使用WiX自动安装运行时库
- 17. 要使用哪个数据库以及如何在安装时进行安装?
- 18. 如何运行/安装xcodebuild?
- 19. CMake安装
- 20. Cmake和gcc结合使用
- 21. cmake在安装mysql时不起作用
- 22. 使用gcc链接到使用Homebrew安装的动态库?
- 23. delphi运行时包安装
- 24. 安装GCC-FORTRAN
- 25. 安装GCC 4.8.2
- 26. 安装GCC 4.2.4
- 27. 如何从cmake内部运行cmake?
- 28. 使用Cmake运行CppuTests
- 29. cmake:如何检查库的运行时间?
- 30. CMake链接安装共享库
注意的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编写了一个小脚本。 –