移植Konqueror/Embedded 到mips平台(转贴http://www.lyore.cn/blog/read-209.html)

相关软件包:qt-embedded-free-3.3.8.tar.bz2, konquorer3-embedded-0.2-20060121.tar.bz2
执行命令顺序:

export QTEDIR=/root/qt-embedded-free-3.3.8
export CC=mipsel-linux-gnu-gcc
export CPP='mipsel-linux-gnu-gcc -E'
export CXX=mipsel-linux-gnu-g++
export CXXCPP='mipsel-linux-gnu-g++ -E'

./configure --prefix=/usr/local/konquerorE --host=i686-pc-linux-gnu --target=mips-linux --disable-debug --enable-qt-embedded --enable-embedded --enable-cgi --with-qt-dir=$QTEDIR --with-qt-includes=$QTEDIR/include --with-qt-libraries=$QTEDIR/lib --disable-pcre --without-ssl

export KDEDIRS=/usr/local/konquerorE:/usr
kdm restart

make
make install
注意移植qte时需要加上线程库的支持和--no-cups选项,否则会出现头文件找不到和编译错误,完整配置命令是:./configure -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -little-endian -embedded mips -depths 8,16,18,24,32 -qvfb --no-cups -no-ipv6 -no-largefile -thread,其他选项可酌情增删。
不可通过加“--enable-static --disable-shared”将konqueror编译成静态库,否则会出现链接错误,据邮件列表中一个开发人员说这是一个bug,但不打算近期解决,网上已有相关的patch下载。
配置时曾出现zlib库不够新的错误,但奇怪的是我下载最新的zlib并编译安装后仍然如此,通过跟踪configure脚本和config.log信息 得知它是通过在内存中构建一个程序,该程序调用zlib的相关函数,编译后通过检测是否有错误来验证zlib是否可链接。问题最终定位到交叉编译器无法链 接zlib库。奇怪通过gcc命令中加上-I -L参数、设置LD_LIBRARY_PATH、编辑ld.so.conf、拷贝库到/lib,/usr/lib都不行,最后只好将so文件拷到编译器所 在lib路径下才成功通过配置和编译。这个问题真是百思不得其解!
当把编译后/usr/local/konquerorE文件夹以及之下文件拷到目标板上后,执行bin下面的mips-linux-konqueror -qws时,出现错误:./mips-linux-konqueror: error while loading shared libraries: libkonqe.so.0: cannot open shared objy,该错误曾经困扰我两天多,后来经huzj提醒得以解决。原因是konqueror相关库没有加入库查找路径中,运行:export LD_LIBRARY_PATH=/path/of/konqueror/lib:$LD_LIBRARY_PATH后重新运行konqueror二进制文件即可。

附:zlib交叉编译过程:
1. 下载libz,网址:http://www.zlib.net/

2. ./configure --shared

     make LDSHARED="mipsel-linux-gnu-gcc -shared -Wl,-soname,libz.so.1" CC_FOR_BUILD="mipsel-linux-gnu-gcc" CC="mipsel-linux-gnu-gcc" LD="mipsel-linux-gnu-ld" CPP="arm-linux-g++ -E" AR="mipsel-linux-gnu-ar rc" prefix="/opt/nxlinux/gcc/gcc-3.3.4-glibc-2.3.2"    CFLAGS="-fPIC" libz.so.1.2.3 libz.a
如果将编译后的库放入其他路径下,则需要将相关头文件(zconf.h zlib.h)随之放入有关include下面。


 

//******************************************************************************************************

export QTEDIR=/home/xuyaojun/Destktop/Qt/qt-embedded-free-3.3.6
export PATH=/usr/local/arm/2.95.3/bin:$PATH
mkdir /usr/local/konquerorE
export CC=arm-linux-gcc
export CPP='arm-linux-g++ -E'
export CXX=arm-linux-g++
export CXXCPP='arm-linux-g++-E'

./configure --prefix=/usr/local/konquerorE --host=i686-pc-linux-gnu --target=arm-linux --disable-debug --enable-qt-embedded --enable-embedded --enable-cgi --with-qt-dir=$QTEDIR --with-qt-includes=$QTEDIR/include --with-qt-libraries=$QTEDIR/lib --disable-pcre --without-ssl
export KDEDIRS=/usr/local/konquerorE:/usr
kdm restart
make
make install

你可能感兴趣的:(Qt)