• 6973阅读
  • 1回复

关于QT3/4静态编译的差别问题 [复制链接]

上一主题 下一主题
离线sinl
 

只看楼主 倒序阅读 楼主  发表于: 2006-04-17
QT4静态编译的问题最近一直困扰着我,耗费了我不少精力

我在这里将我编译的结果大家讨论一下看看到底问题出在哪里?也希望有兴趣的朋友给点建议

QT4静态编译的主要问题是用户程序使用静态链接的时候出错,而且Designer做界面的时候中文输入是乱码


为了做个比较特将QT3在相同的环境下编译了一遍

以下系统平台均为RedFlag Workstation 5.0

QT3选择的是3系列最后版本3.3.6
QT4选择的是4系列最新版本4.1.2

QT3编译配置选项:
  1. ./configure --prefix=/usr/lib/qt-3.3.6-static -static -qt-gif -fast -platform linux-g++-32 -xplatform linux-g++-32 -disable-sql -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-odbc -no-sql-sqlite -no-style-cde -no-style-motif -no-style-motifplus -no-style-sgi -thread -no-nis -no-cups -no-ipv6 -no-sm -no-xshape -no-xinerama -no-xcursor -no-xrandr -no-xrender -no-xft -no-xkb


为了完整测试中文支持的关系,我关闭了绝大部分选项

生成的静态QT3的库用户程序是可以静态链接的,而且Designer可以输入中文,在程序里面加入中文也是可以正常显示的

QT4编译配置选项:
  1. ./configure --prefix=/usr/lib/qt-4.1.2 -static -fast -platform linux-g++-32 -release -no-qt3support -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-sql-odbc -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-tds -no-sql-sqlite

QT4的编译选项仅仅关闭了一些数据支持模块,其他X部分全部保留了
但是不能静态链接用户程序,报错,而且Designer不能输入中文
但是程序在动态链接的情况下似乎在程序里面使用中文可以正常显示
虽说是动态链接,但是当你用ldd查看的时候,动态链接的用户程序只是动态链接了系统里面的一些库
看不见libQtGui,说明QT4的库仍是静态链接到用户程序里面的

  1. /configure --prefix=/usr/lib/qt-4.1.2-static-least -release -static -fast -no-accessibility -no-qt3support -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-sql-odbc -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-tds -platform linux-g++-32 -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -no-rpath -no-nis -no-cups -no-sm -no-xshape -no-xinerama -no-xcursor -no-xrandr -no-xrender -no-fontconfig -no-tablet -no-xkb


当我关闭QT4所有选项后,生成的静态QT4库,用户程序可以实现静态链接,但是不能显示中文,前面能在动态链接下显示中文的程序无论动态还是静态链接后也是乱码


不知道这是不是QT4的问题还是我的配置问题,希望高手能指点迷津
[ 此贴被sinl在2006-04-17 12:54重新编辑 ]
离线cxjnet
只看该作者 1楼 发表于: 2009-01-07
帮你顶一下,希望高手了答
快速回复
限100 字节
 
上一个 下一个