指定qmake编译qt源码_执行qmake和构建

hacker|
104

文章目录:

Qt下如何编译库

一般分为动态库和静态库,方法分别如下:

一. 静态库的生成

1. 测试目录: lib

2. 源码文件名: mywindow.h, mywindow.cpp

3. 编写项目文件: mywindow.pro

注意两点:

TEMPLATE = lib CONFIG += staticlib

4. 生成Makefile:

qmake mywindow.pro

5. 编译生成静态库libmywindow.a

make

二. 静态库的使用

1. 测试目录: test

2. 将mywindow.h与libmywindow.a拷贝至test目录下

3. 编写main.cpp, 包含头文件mywindow.h, 并调用MyWindow类

4. 编写项目文件: test.pro

注意加上库路径与库文件名:

LIBS += -L ./ -lmywindow

5. 生成Makefile: qmake test.pro

6. 编译: make

7. 运行: ./test

三. 动态库的生成

动态库编译基本和静态库类似,需要将上述将要进行编译的项目文件.pro中下面这行去掉

CONFIG += staticlib

按上述操作编译完后就可以得到以lib开头并且.so* 结尾动态库文件,一般有多个。

如何让QT编译器显示光标

1 PC版本

在终端中输入:sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer qt4-qmlviewer

◆qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator

◆qt4-doc 这个是帮助文档

◆qt4-qtconfig Qt的配置工具,这个装好默认好

◆qt4-demos 官方的一些Demo

◆qt4-designer 可视化窗体设置工具

◆qt4-qmlviewer 和qtcreator相关

安装后,没有安装Qt Creator,在Ubuntu 图形桌面上点击左侧的Ubuntu Software Center,搜索Qt ,选择Qt Creator

完成后,在terminal命令行执行命令 qtcreator启动Qt Creator了

注:如果需要编译特定版本的,如4.8.5,则:

(1) 安装一些依赖包

sudo apt-get install libX11-dev libXext-dev libXtst-dev

(2) 下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz,解压后进入目录

用命令 sudo ./configure -prefix /usr/local/Trolltech/Qt-4.8.5;sudo make;sudo make install即可

2 ARM版本

注:以下所使用的交叉编译工具为arm-none-linux-gnueabi 如果使用arm-linux 做相应的修改即可

(1)下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz;

(2) 解压后进入该文件夹,执行.

./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -fast -lrt

(3) 执行make,及make install命令,一般时间比较长

(4) 完成后修改mkspecs文件的权限,供qt creator使用: sudo chmod 775 mkspecs -R

(5) 配置qt creator:工具-选项-Qt4 找到“手动设置”增加一个,qmake路径填第二步中的安装目录下的qmake路径,”usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake“

(6)配置完成后,打开项目后点左侧“项目”,选择刚才配置的Qt版本即可编译生成arm版程序了

3 移植到ARM

(1)需要将usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib移植到ARM板上相同的位置,将plugins里的.so也移入..../QtEmbedded-4.8.5-arm/lib

(2) 对(1)中的lib/下的.so做链接

ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so

ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4

ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4.8

ln -s libQtGui.so.4.8.5 libQtGui.so

ln -s libQtGui.so.4.8.5 libQtGui.so.4

ln -s libQtGui.so.4.8.5 libQtGui.so.4.8

......

注:(1)(2) 也可以用压缩打包整个lib,拷贝过去来实现

(3)vi ~/.bashrc 文件,加入

QTDIR=usr/local/Trolltech/QtEmbedded-4.8.5-arm

export QTDIR

PATH=$QTDIR/lib:$PATH

export PATH

LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

4 一些常见错误

(1) “QMAKESPEC has not been set”,解决方案:sudo gedit ~/.bashrc ,添加内容:export QMAKESPEC=usr/local/Trolltech/QtEmbedded-4.8.5-arm/mkspecs/qws/linux-arm-gnueabi-g++

(2) 安装了多种版本的QT,如果想默认使用QtEmbeddedb版本,可以在上述文件中加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH

(3) 配置完成后,可使用qmake -project;qmake;make进行工程编译

(4) arm开发板的终端打不开,出现"grantpt failed:..."问题,可以输入:mount -o remount,gid=5,mode=620 /dev/pts 回车

(5) Qtcreator配置出现,没有编译链,则可加入GCCE编译链,目标位置就是linux-none-arm-guneabi-g++所在位置

(6) 出现qmlviewer 没有安装的问题,可从/usr/bin里将qml开头的三个可执行文件拷到usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin下

(7) make 出现arm-none-linux-gnueabi-g++命令未找到,如果确定环境变量已经添加,则检查文件所属账号是不是你现在账户;环境变量如果一直不对,可以关掉终端,新开一个,重新设置

(8) 如果开发板运行程序的时候出现 cannot mix incompatible Qt library with this library,查找资料,大家都说最可行性的解决方案是卸干净,重新编译,自己花了好长时间重新编译后,发现还是一样。然后用ldd filename 查看了运行文件依赖的库,发现程序有部分链接到了开发板上的Qt库。做了Qt动态库的全部ln(具体见第3部分)

//////////////////////////////////////////////////////////////////////////////////////////////////////由于项目需要,需要加入触屏,编译过程中发现不同与之前的新的问题,记录如下

一 触屏库tslib的编译

1 下载相应的工具

do apt-get install automake

sudo apt-get install autogen

sudo apt-get install autoconf

sudo apt-get install libtool

2 很重要的一步,设置 CC和CXX

export CC=.... ,export CXX=...,一般CC=arm-linux-gcc ,CXX=arm-linux-g++,我的交叉编译环境是arm-none-linux-gnueabi-gcc,arm-none-linux-gnueabi-g++,输入命令 export CC=arm-none-linux-gnueabi-gcc export CXX=arm-none-linux-gnueabi-g++

3 编译

cd tslib

./autogen.shecho "ac_cv_func_malloc_0_nonnull=yes" arm-none-linux-gnueabi.cache #(这样做到目的是避免出现undefined reference to rpl_malloc错误)./configure --host=arm-none-linux-gnueabi CC=你的cc编译器所在路径 CXX=你的++编译器所在路径 --cache-file=arm-none-linux-gnueabi.cache -prefix=/usr/local/tslibmakemake install

4 检查,可进入/usr/local/tslib/bin 里,file ts_test(或其他文件) 如果显示ARM,表明编译正确,如果显示80386表明你用的不是交叉编译器,而是系统的gcc。注:因为版本不一致,导致编译QT时一直出现 fail to find tslib function...,加入-verbose选项,打印出/opt/../ld:cannot find -lts(tslib和qt编译器版本不对应造成)。

二 编译QTe 4.8.5

1 编译指令需要改为./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -no-xcursor -no-mouse-linuxtp -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -fast -lrt

不需要鼠标的话就加上绿色的文字,并且修改./src/gui/embedded/qwscursor_qws.h,在文件头部加上#define QT_NO_QWS_CURSOR

2 编译器最好在qws/linux-arm-gnueabi-g++/qmake.conf中指定完全的路径,否则可能出现一些奇怪的错误。

3 qmake.conf中记得加入-lts 在g++ gcc后面

三 移植到开发板

如果开发板中没有tslib库,则需要进行移植1 将tslib库拷到开发板 /usr/local/tslib2 修改ts.conf vi /usr/local/tslib/etc/ts.conf -》将#module_raw input前的#去掉3 vi /etc/profile 添加export TSLIB_ROOT=/usr/local/tslib

export TSLIB_TSDEVICE=/dev/input/event1

export QWS_MOUSE_PROTO=tslib:/dev/input/event1

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_CONSOLEDEVICE=none #避免出现“open console device: No such file or directory KDSETMODE: Bad file descriptor”的错误

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/libTSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下哪个文件可用cat /proc/bus/input/devices查看具体可参考博客

1

qt的qmake命令的使用方法

我来回答你的问题吧 首先make命令一般是linux上gcc默认使用的 而windows上编程一般使用visual c++的,它的编译器命令就不是make而是nmake。其次你使用qtCreator编译就可以,没必要使用命令行,因为命令行需要设置环境变量的。如果硬要使用命令行可以用qt工具栏里找一个qt command prompt,这里面用minw32-make可以编译,ming32是qtcreator使用的编译器。

改成#include QtGui/QApplication试试

linux下 qt程序源代码如何编译运行。

qmake -project? 已经有.pro文件了! 直接运行qmake或者qmake snake.pro或qmake -makefile snake.pro.

重新解压,按以下步骤做:

$ qmake

$ make

找到可执行文件(不是.o, 没后缀的), 一般如果snake.pro中没设置TARGET,默认生成的可执行文件为snake,输入

.$ /snake

如果仍有问题发给我。我给你编译好。

使用qmake自动编译Qt程序,怎么设置g++的编译选项

1)系统中是不是存在多个qt版本?(codeblocks设置了正确的版本)

2)环境变量是否正确?qdir,qmakespec(新版本qt已经不需要),path

3)如果是qt程序,最好还是要用qmake的,因为qmake是gcc之前的一个步骤,也就是说,qmake之后还要make的。如果实在不想用捷径,那要手动做很多工作,如moc编译,资源编译等,这比qmake复杂很多,初学者不推荐

windows下直接安装的qt sdk 。 怎么运行qmake来编译

如果想用控制台命令行来编译,把你写的cpp文件和ui文件放到一个文件夹里,然后cd到你cpp文件所在文件夹,再执行qmake -project

如果使用的qt sdk可视化的编辑环境,参照下面网址配置并运行example。

2条大神的评论

  • avatar
    访客 2022-07-16 下午 08:14:48

    doc qt4-qtconfig qt4-demos qt4-designer qt4-qmlviewer ◆qt4-dev-tools 中包括了Qt Assis

  • avatar
    访客 2022-07-17 上午 02:56:18

    工具-选项-Qt4 找到“手动设置”增加一个,qmake路径填第二步中的安装目录下的qmake路径,”usr/local/Trolltech/QtEmbedded-4.8.5-

发表评论