qt嵌入式版本编译遇到了很多很多麻烦,主要因为我对linux还有qt不熟,对configure对makefile不熟,整个流程都是看的别人的博客,至于为什么要这样,不得而知,但是整个过程下来收获很大的,看着问题一个个被解决,心情很好。虽然在准备考研了,时间都不知道怎么用,但是如果能坚持记一记自己那么努力了一小下的过程也是很不错的体验,希望不要有人看吧,太乱的排版,太差的文字表述。
过程参考:点击打开链接这篇博客。以下总结遇到的问题及解决。
1、(1)一开始不理解opensource-everywhere这个qt包的含义,下载qt就很盲目,不知道选哪个,我下载的最新的linux版的qt5.xx后缀是.run的,直接打开运行就安装好了,十分方便,但是这次为了配置一下arm版的qt,真是麻烦。首先概念明确,我安装好了qtcreater,配置了qt5.5,但是我想在配置qt4.8linuxpc和qt4.8linuxarm,pc版的1解压、2进入目录./configure,3完成后make,4最后make installer,成功。
(2)arm版的主要需要arm-linux-gcc编译器支持,上一篇写了编译器的安装,其实关键在于配置好makefile文件。configure的用处在于自动生成makefile文件,configure主要后面一大堆参数要设置,可以写成shell脚本形式,后缀.sh,我仿照别人的尝试了没有成功,毕竟不太懂linux,后来直接在终端里输入一大堆参数即可,即将下面全部复制到终端里去,
1配置
必须加上“-prefix /usr/local/Trolltech/QtEmbedded-4.8.6-arm ”参数, 不然安装后不在QtEmbedded-4.6.3-arm文件夹下,而是覆盖了QtEmbedded-4.6.3。
# ./configure \
-prefix /usr/local/Trolltech/QtEmbedded-4.8.6-arm \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24 \
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake docs \
注:-prefix /usr/local/Trolltech/QtEmbedded-4.8.6-arm \ 这句话是安装在这个文件夹下,没有的话系统自己建立。
遇到的问题:
1我没有将压缩文件复制到/usr/local/下,始终configure不起来,出现很多错误,具体忘了,但是我将压缩包复制到/usr/local下后解压,然后可以configure但是找不到arm-linux-g++这个玩意,前面我装arm-linux-g++已经都高了很久都成功了,怎么还找不到呢,我换了个终端,用命令arm-linux-g++ -v有结果显示,但是在这个终端里就不可以,后来百度得知在root权限下和自己的模式下环境变量是不一样的,所以我在root权限下又配置了一次arm-linux-g++的环境变量,最后configure就可以了,到底为什么在/usr/local/下可以我也搞不清,configure成功后make,make一会儿出现了一个错,
undefined reference to `clock_gettime',百度得知要在makefile后面加-lrt,加哪我又不知道,最后我加在了configure后面最后一行给了这个参数,编译成功。
2 configure用于源码编译生成makefile文件
有很多参数
./configure -xxx \
-xxx \
-xxx \
反斜杠用于:很长的命令一行输不完用来换行 ,比如上面 参数较多的话用 \转到下一行输入参数