• 6746阅读
  • 3回复

[提问]用静态链接做单文件的EXE,体积问题怎么解决? [复制链接]

上一主题 下一主题
离线srhouyu
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-24
因为倾向于发布单文件EXE的软件,我GOOGLE了一些关于QT静态链接的文章,大致说使用静态链接的话,出来的EXE体积会非常大。而要避免体积过大,必须在编译SDK的时候就要选好,需要哪些部分,抛弃哪些部分。

我有点不明白:静态库在编译时就决定好要谁不要谁,这不是非常不方便吗。我在编译SDK的时候还难以确认今后会用到哪些部分,而重新编译一次SDK消耗的时间又非常长。

我对这一部分还不太清楚。所以有如下疑问:

1. 链接器就不能智能地只加入需要的部分吗?

2. 如果我在源代码中写了一个从没用到的类、变量或函数,那么即使经过编译器优化,它们也会被编译进程序里吗?
我如果不编译SDK,直接引用SDK的源代码,有没有可能性?
离线XChinux

只看该作者 1楼 发表于: 2011-05-24
因为现在的Qt版本,总共就分成那么几的模块,QtCore、 QtGui、QtXml、QtWebKit等等。其中最大的是QtGui和QtWebKit,按默认的编译,它们都是编译成单独的库的(无论是静态库,还是动态库),所以如果你想减少这两个库的体积,那就只能在编译时把不想要的去除了。
[ 此帖被XChinux在2011-05-24 09:08重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线srhouyu
只看该作者 2楼 发表于: 2011-05-24
不知道C++从理论上有没有办法可以做到“没有被main()直接或间接引用过的类、函数就不编译进EXE”?
离线XChinux

只看该作者 3楼 发表于: 2011-05-24
引用第2楼srhouyu于2011-05-24 17:39发表的  :
不知道C++从理论上有没有办法可以做到“没有被main()直接或间接引用过的类、函数就不编译进EXE”?



这个无法判断吧?谁知道某一个库用过没用过?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个