标题:关于Qt 静态编译后打包的可执行程序exe疑问
作者:lwei24
日期:2021-11-19 15:32
内容:
各位大佬,通过windows Qt5编写的应用程序,只连接vs2017的一个静态库,QtCreator静态编译后,exe可执行程序有100多MB,为什么会这么大呢?我只是用了一些常用的控件,比如QWidget,QDialog等,各位有什么办法可以减少可执行程序的大小吗?在线等,欢迎各位大佬指点,小弟在此先谢过了。
#1 [hitler++ 11-19 17:20]
如果你用的cmake ,加入这些代码
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN hidden)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffunction-sections -fdata-sections -fno-ident -Os -s -pipe -fPIC")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections -fdata-sections -Os -s -pipe -fPIC")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-bounds-check -fno-enforce-eh-specs -fno-optional-diags -fno-ident")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -Wl,-soname -Wl,--kill-at -Wl,--as-needed -Wl,-x")
哦,对了,这个只适合gcc或mingw, vs似乎没什么用
#2 [clickto 11-19 20:20]
1、程序编译的版本?debug还是release?
2、如果实在有这么大的话,又在意大小,可以加个压缩壳,一般只使用核心控件的软件都可以控制在10m以内
顺便说一下,如果没有购买商业版而使用静态编译的话,注意授权问题。
#3 回 hitler++ 的帖子 [lwei24 11-22 15:06]
hitler++:如果你用的cmake ,加入这些代码
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN hidden)
....... (2021-11-19 17:20)
谢谢,不过,我用的是qmake
#4 回 clickto 的帖子 [lwei24 11-22 15:09]
clickto:1、程序编译的版本?debug还是release?
2、如果实在有这么大的话,又在意大小,可以加个压缩壳,一般只使用核心控件的软件都可以控制在10m以内
顺便说一下,如果没有购买商业版而使用静态编译的话,注意授权问题。 (2021-11-19 20:20)
release,不是作为程序发行的版本吗?那个,没有购买商业版而使用静态编译,要注意哪些授权问题呢?请大佬指点一下
#5 回 clickto 的帖子 [hitler++ 11-22 16:59]
clickto:1、程序编译的版本?debug还是release?
2、如果实在有这么大的话,又在意大小,可以加个压缩壳,一般只使用核心控件的软件都可以控制在10m以内
顺便说一下,如果没有购买商业版而使用静态编译的话,注意授权问题。 (2021-11-19 20:20)
文件太大不适合加壳,他的100多M的exe加壳后运行内存也会多100多M