linux下编译qt
A. 为什么linux下Qt程序编译时找不到mkspecs for QMAKESPEC
要定义环境变量 QMAKESPEC.
例如,如果你用gcc编译器的话,令QMAKESPEC=linux-g++ 当然还要区分32位系统和64位系统,到你的QT目录下找到mkspecs目录,找到适合你系统的QMAKESPEC.
如果没有该目录,重新下载安装QT吧。
B. linux下如何运行qt程序
在Linux环境下运行Qt程序,首先需要安装必要的软件和库。对于图形界面,可以直接下载并安装Qt Creator,以及libqt4-dev和qt5default-dev,前者是用于开发的集成环境,而后者是库文件,用于支持Qt应用的运行。如果环境是命令行模式,且没有图形界面,想要运行对话框程序,需要通过qmake和make命令来编译源代码。具体步骤包括:
1. 使用qmake生成Makefile,命令为:qmake -project
2. 使用make编译源代码,命令为:make
3. 编译完成后,会生成可执行文件,可以直接运行,命令为:./程序名
如果遇到权限问题,需要先给可执行文件加上执行权限,命令为:chmod +x 程序名
此外,还需要注意一点,对于某些特定的Qt应用,可能还需要安装对应的Qt模块,例如Qt Widgets模块,可以通过以下命令安装:
sudo apt-get install qt5-default
以上就是在Linux环境下运行Qt程序的基本步骤,包括安装依赖、编译源代码以及运行程序。对于命令行模式,这种方式特别有用,因为不依赖于图形界面,可以在任何终端环境中运行。
C. Linux上静态编译Qt应用实现方案linux静态编译qt
随着越来越新兴Qt建站应用软件的出现,用户可以更加方便地搭建跨平台和可移植性更高的程序。由于Linux操作系统大量使用静态编译,许多用户在使用Qt建站时希望将其应用进行静态编译,以节省后续的移植成本。
静态编译Qt应用需要满足以下条件:
(1)必须安装Qt源码。可以从官网下载Qt安装包,也可以从git仓库更新,一般来说需要安装qt-every-where-src-VERSION.tar.gz这类的源码包。
(2)使用QT_STATIC_BUILD编译参数,可以指定安装路径以部署编译好的二进制文件。
(3)使用Linux平台特定的软件包管理器,比如Debian和Ubuntu,下载并安装相关的编译库:
-debreate Build-Deps,用以加载基本的编译包
-qtwebkit-src,编译应用程序所需要的前端引擎组件
-qtbase-src,编译应用程序所需要的包含Qt library、GUI等组件
根据以上步骤,可以利用Linux命令行工具编译Qt应用,例如:
$ ./configure –prefix=/path/Qt,如果使用Qt5,可以使用-static-developer参数
$ make,如果需要加速编译,可以加上-j参数
$ make install
最后,可以对构建的二进制文件运行ldd命令、ldconfig命令以及QMAKE等捆绑工具,以构建具有完整功能的应用程序二进制包。
以上就是Linux上静态编译Qt应用实现方案。Qt模块可以快速安全地完成构建,使用是静态编译可以实现应用跨平台和可移植性更高,给用户带来更优的体验。
D. linuxqt编译
linux下执行qt程序怎么编译运行?
1、在Linux下的命令行编辑程序:#mkdirhello//mkdir命令创建一个hello目录#cdhello//cd命令切换到刚才创建的hello目录#vimain.cpp//在hello目录中用vi创建一个main.cpp文件将下面的代码输入到main.cpp文件中#include
怎样在ubuntu下安装qt嵌入式?
1cd~/Qtenv 2 3chmo+xqt-sdk-linux-x86-opensource-2010.04.bin 4 5./qt-sdk-linux-x86-opensource-2010.04.bin 为了文件管理方便,将sdk也安装在Qtenv文件夹中。 2、解压源代码包 在用户目录下建立一个Qtenv目录,用于存放编译源文件。 mkdir$HOME/Qtenv 在qtembedded目录下创建arm和x86目录。创建这两个目录主要是为了编译一个用户arm开发版的QTE,另一个目录用于存放用于qvfb的x86下QTE,这样演示和开发都很方便。 1cd~/Qtenv 2mkdirarmx86 接下来将源代码包分别复制到arm和x86下并解压缩。这样做虽然浪费了一些硬盘空间(ps:在宿主机上的硬盘太不值钱了),但能为将来再配置和编译节省很多时间。 1cd~/Qtenv 2mvqt-everywhere-opensource-src-4.6.3.tar.bz2./arm 3cd~/Qtenv/arm 4tarxjvfqt-everywhere-opensource-src-4.6.3.tar.bz2 5 6cd~/Qtenv/x86 7mvqt-everywhere-opensource-src-4.6.3.tar.bz2./x86 8tarxjvf./x86/qt-everywhere-opensource-src-4.6.3.tar.bz2 解压缩后分别针对arm平台和x86平台进行配置,配置前可输入 ./configure-embedded-help 进行配置帮助查询,根据平台配置,并编译和安装文件。其命令代码如下: 1cd~/Qtenv/arm 2./configure-prefix$HOME/Qtenv/arm-embeddedarm-nomakedocs-nomakedemo-nomakeexamples 3make 4makeinstall 5 6cd~/Qtenv/x86 7./configure-prefix$HOME/Qtenv/arm-embeddedx86-nomakedocs-nomakedemo-nomakeexamples 8make 9makeinstall 在经过漫长的配置、编译后就完成了QTE的安装。本人在arm版的编译过程中出现过两个错误,在参考《在arm-linux-gcc3.4.1下编译qt-embedded-4.6.2》完成编译。 完成编译和安装后需要对系统的环境变量进行设置,设置可以是临时性设置和永久性设置。临时行设置是直接在命令窗口输入 1exportQTENV=$HOME/Qtenv 2exportQTXDIR=$QTENV/qtsdk 3exportQTEDIR=$QTENV/x86 4exportPATH=$QTXDIR/qt/bin:$PATH 5exportLD_LIBRARY_PATH=$QTXDIR/lib:$LD_LIBRARY_PATH 6exportQVFBDIR=$QTXDIR/qt/bin 7exportQTEMAKEDIR=$QTEDIR/bin 以上这些变量可以根据自己的喜好进行增删。这种设置方法在关闭当前命令终端后失效。 第二种方式是在当前用户的主目录下,编辑.bash_profile文件,加入上述命令行,保存重启命令终端即可。
如何在ARMLinux环境中搭建QT运行环境?
1、可以2、QtCreator只是一个集成开发工具,这个版本随意,网上下就可以,Qte不是用最新,而是最好用跟你在Linux开台开发一样的。首先要在Linux下交叉编译Qte的库,然后再将Lib这些文件移植在板子上,最后通过交叉编译好的库去编译你在pc
树莓派下怎样运行移植的QT程序?
你可以参考SQLiteStudio这个Qt写的跨平台SQLite管理工具,它自己打包了依赖的Qt库,可以做到解压即用,兼容不同Linux发行版.道理其实跟Windows版Qt程序自带Qt库差不多.
编译前给连接器传一个参数:
说明:
-Wl表示告诉编译器将后面的参数传递给链接器.
rpath是gcc的一个参数,当程序被加载时,会搜寻rpath目录,寻找共享库.
rpath添加的目录信息保存在可执行文件中.
$ORIGIN表示可执行文件所在的目录.
也就是运行时程序会先去自己所在的目录的lib里去加载依赖库,没有的话再去系统库里找.
如果你的程序在编译时没有传递rpath参数,那你也可以用patchelf来修改你程序的rpath:
注意:patchelf修改文件后再strip会导致文件损坏.
所以应该先用strip删除符号表缩小二进制文件,然后再用patchelf设置rpath.
题外话,Android上既没有glibc库,也没有库链接器ld-linux.so.3.
如果你要把DebianARM(如树莓派Raspbian)上的软件放到Android上跑,你一样可以打包程序依赖的共享库,让程序也能跑在Android上,比如PHP:
也就是你把库链接器ld-linux-armhf.so.3和PHP依赖的库都放到/data/local/tmp/web/lib里,然后设置个别名,就能在Android的adbshell里运行树莓派的PHP了.
当然,你也可以用patchelf设置PHP的interpreter和rpath,效果差不多:
怎样交叉编译一个QT应用程序?
1.设置环境变量:rPATH=添加为交叉环境下编译后生成的qmake路径,通常和主机的系统是一种架构,同时需要确保交叉gcc编译器在在PATH定义rQMAKESOEC=交叉编译的对象的的平台描述文件,例如makespec/qws/linux-arm-g++rQTDIR=Qt的安装文件,存放这库和头文件rLD_LIBRARY_PATH=存放的是Qt的交叉编译后的库,准备为目标编译链接的库r2。执行环境变量r通常我们都会将以上的设置放置在一个bash脚本中,需要的时候就执行一下。开始编译r1.使用qmake-project来生成项目文件****.pror2使用qmake来生成Makefile文件r3使用make来编译移植:使用readeif工具来分析目标系统的以来库,然后相关的库到目标文件系统内。通常我们也是采取脚本的方式来完成。r一般而言,凡是有规律的或者重复性的工作,我们都可以采取脚本的方式来解决。
E. 姹傚姪锛岁t鍦╨inux涓嬶纴宓屽叆寮忎氦鍙夌紪璇戠幆澧冮厤缃锛
绛:1銆佸彲浠2銆丵tCreator鍙鏄涓涓闆嗘垚寮鍙戝伐鍏凤纴杩欎釜鐗堟湰闅忔剰锛岀绣涓娄笅灏卞彲浠ワ纴Qte涓嶆槸鐢ㄦ渶鏂帮纴钥屾槸链濂界敤璺熶綘鍦↙inux寮鍙板紑鍙戜竴镙风殑銆
棣栧厛瑕佸湪Linux涓嬩氦鍙夌紪璇恸te镄勫簱锛岀劧钖庡啀灏哃ib杩欎簺鏂囦欢绉绘嶅湪𨱒垮瓙涓婏纴链钖庨氲繃浜ゅ弶缂栬疟濂界殑搴揿幓缂栬疟浣犲湪pc涓婄紪鍐欑殑绋嫔簭锛屾斁鍒版澘瀛愪笂杩愯!鍏充簬浜ゅ弶缂栬疟QT镄勬枃绔狅纴缃戜笂鍙浠ユ悳鍒板緢澶氥
3銆乄IN7骞冲彴镄勪氦鍙夌紪璇戝伐鍏峰畨瑁呮瘆杈冮夯鐑︼纴涓嶆帹钻愪娇鐢锛岀洿鎺ュ湪Linux铡讳笅涓涓鍒浜轰氦鍙夊伐鍏峰寘锛岀洿鎺ヨВ铡嫔氨濂姐伞
铡诲弸锽勭殑瀹樼绣锛屾垨鍏朵粬缃戠珯涓嬭繖绫荤殑宸ュ叿瑙夊缑浣犺佸厛鐞呜В浠涔埚彨浜ゅ弶缂栬疟寮鍙!!!!!
F. 我在windows下用QT写了个程序,把这个源代码直接在linux下编译可以吗
可以,只要你不调用Windows的API函数就可以。 还有你在不同的系统可以使用条件编译那样就不存在任何问题了