我编译一个C ++程序,这是我的电脑上完美的工作,但如果我的朋友试图启动程序,它说libgcc_s_sw2-1.dll
缺失。 我怎么能包括所有使用C进行程序所需的GCC运行时库?
Answer 1:
作为rubenvb正确答案:libgcc中是必需的,或者你应该添加CMAKE_EXE_LINKER_FLAGS=-static
您的CMakeLists.txt。
作为替代方案,你可以尝试找到libgcc_s_sw2-1.dll在你的MinGW安装和“包”,它使用安装InstallRequiredSystemLibraries 。 这与很好地集成CPack为好。
在我自己的代码,例如,我有:
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 )
Answer 2:
该libgcc的DLL由使用GCC编译的所有程序所需。 如果你不想重新发布与程序这个DLL,你必须通过静态链接-static
的链接,或CMake的:
CMAKE_EXE_LINKER_FLAGS=-static
这是具体的GCC。
文章来源: How can I install GCC runtime libraries with CMake?