• 17695阅读
  • 11回复

请哪位来解释一下Qt静态编译和动态编译的区别 [复制链接]

上一主题 下一主题
离线wd007
 

只看楼主 倒序阅读 楼主  发表于: 2009-02-05
— 本帖被 XChinux 执行加亮操作(2009-02-05) —
请哪位来解释一下Qt静态编译和动态编译的区别,在使用时的区别又是什么呢?我很想知道,谢谢
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线wd007

只看该作者 1楼 发表于: 2009-02-05
顶一下,等精通的兄弟来解答
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线XChinux

只看该作者 2楼 发表于: 2009-02-05
Qt的静态编译,将各模块编译成静态库,这样在编译自己写的Qt程序时,会将这些静态库编译到你的EXE文件中去的。
Qt的动态编译,将各模块编译成动态库,这样在编译自己写的Qt程序时,会将这些动态库链接到你的EXE文件中去的,执行时需要Qt模块的动态库。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线wd007

只看该作者 3楼 发表于: 2009-02-05
谢谢版主,我还想请问就是说动态编译的话,给开发出来的程序打包时需要把这些动态库一并打进去,是这样吗
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线chrisopal
只看该作者 4楼 发表于: 2009-02-05
是的,如果动态编译,产生 的exe 必须要依赖于QtGUI.dll。QtCore.dll,QtNetwork.dll etc.
如果是静态编译, 在头文件里 包含 如“QWidget” 而不是<QWidget>这样编译之后就不需要上面的动态库了
离线wd007

只看该作者 5楼 发表于: 2009-02-06
谢谢兄弟的解答
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线scut_ray
只看该作者 6楼 发表于: 2009-02-18
静态编译(其实应该叫链接,不是编译)是指模块链接(注意,是链接,而不是编译)到程序里面。
动态编译室指模块以动态库的形式(windows是DLL)存在,程序运行的时候要先从动态库获取模块程序。

但需要注意的是,有时候,并不是所有模块都是同一种编译方式。例如,在编译qt的时候,即使你在执行configure的时候替阿加了-static参数,也只是qt库是静态链接,ms的c & c++ runtime库还是以动态库形式链接的。要使两样都以静态链接,请参考:http://www.qtcn.org/bbs/read.php?tid=13825
离线wd007

只看该作者 7楼 发表于: 2009-02-18
谢谢楼上的兄弟,这个问题总算比较清楚了
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线yiyuan
只看该作者 8楼 发表于: 2009-11-19
Hi,
个人认为静态库和动态库的区别是, 加载函数的执行代码,是运行时候加载还是连接时候加载。

还有个问题请教下 :
static的 qt库, 如果configure时候, 设置了-plugin-gfx-xxx, 那调用这个外部库时候,在qt/e的源码中, 对于静态编译的, 是不给予支持,  但如果要这样子, 这个问题该怎么解决呢 ?  强制的调用?
麻烦的
离线steinlee

只看该作者 9楼 发表于: 2009-11-21
the executable code with static link can be bigger and runs a little bit faster.
the executable code with dynamic link can be smaller and runs a little slower.

The main difference may be compiling. If your code is large and you use static
link, compiling time can be very long. if you change only the contents of
dynamic libraries, you compile these libraries only. Then you do not need to
recompile your whole applications.

Dynamics libs can be used to organize your code. For large applitions it is
a must. Now you may know the tricks of plugins and patches.
[ 此帖被steinlee在2009-11-21 04:21重新编辑 ]
Looking for remote C/C++ and Qt 兼职
离线wd007

只看该作者 10楼 发表于: 2009-11-21
楼上解释的不错,thanks
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线stklv

只看该作者 11楼 发表于: 2009-11-21
还有一点,静态库可以不需要寻找Plugin目录,动态库的Plugin目录是需要按照Qt的规定部署的。
快速回复
限100 字节
 
上一个 下一个