
正文
关于Linux命令行编译qt的信息
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux下执行qt程序怎么编译运行
1、在Linux下的命令行编辑程序:
[root@localhost root]# mkdir hello
//mkdir命令创建一个hello目录
[root@localhost root]# cd hello
//cd命令切换到刚才创建的hello目录
[root@localhost hello]# vi main.cpp
//在hello目录中用vi创建一个main.cpp文件 将下面的代码输入到main.cpp文件中
#include QApplication
#include QLabel
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QLabel *label = new QLabel(“Hello Qt”);
Label-show();
return app.exec();
}
2、然后在命令行编译程序:
[root@localhost hello]# qmake –project
//执行qmake –project,因为目录是hello,因此在hello目录下生成一个与平台无关的项目文件hello.pro,
[root@localhost hello]# qmake hello.pro
//执行qmake hello.pro项目文件后,在hello目录下生成一个与平台有关的Makefile文件。
[root@localhost hello]# make
//执行make进行编译源代码,并生成main.o目标文件及hello执行文件。
[root@localhost hello]# ./hello
//执行hello,就会弹出Hello Qt窗口,到此说明成功了。
相关问答
Q1: linux命令行编译qt程序时,默认使用的是arm-linux-gcc编译器,生成的可执行程序无法
修改$QTDIR/mkspecs目录下的符号链接default.将其指向linux-g++
$QTDIR是路径Linux命令行编译qt,具体要看Linux命令行编译qt你把QT装到什么地方和QT本身的版本Linux命令行编译qt,一般是/usr/lib[64]/qt4
修改default符号链接的作用是让qmake在生成Makefile的时候将Makefile文件中的编译器变量$CC与$CXX赋值成gcc和g++
Q2: qt可编译运行但不能独立运行linux
出问题的exe名称为TestApp.exe,在Visual Studio下编译运行都正常,但无法直接点击exe运行。报错为(应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序)
本人环境:基于visual studio IDE下的QT编译器,共有四种,在 qt-版本号 文件夹下。
我的问题解决步骤如下:
1.看准自己项目的编译环境
我电脑虽然是64位的,但是编译器环境是32位的,故之后所有都需要以32位为标准
由于是Visual Studio ,所以采用下面文件夹中的msvc2017环境进行编译(没有标注64位就是32位)
2.添加系统环境变量
打开控制面板搜索环境变量,对系统path进行更改
按照上一步的环境进行配置!!!不要添加冗余路径,一项即可!!
PS:多项也可以,但是要在IDE中选择正确的default编译器,不然系统会搞混64和32位的dll
3.进入qt自带的命令行中
开始框中搜索 → 选择合适的环境(比如我是MSVC 2017 32-bit)→ 进入目标exe程序所在文件夹
输入命令
windeployqt xxx(目标exe名称)
复制
PS:该命令(windeployqt)若添加了系统Path后,也可以直接在系统cmd中运行,前提是:环境Path只有适合自己项目的那一项!!(only 32 or 64) 否则系统会弄混。。。然后就又失败链接了qaq
此时,在exe的文件夹下面会多出很多文件夹和dll文件,表明已经link成功
再次强调:不同位数的编译器链接出来的dll不同!一定一定要适合自己的程序
Q3: linux qt 编译时与运行时缺乏共享库
LIBS += -L /usr/local/lib -levent -levent_core -levent_extra -levent_pthreads
/usr/local/lib 为lib库所在路径
-levent -levent_core -levent_extra -levent_pthreads为需要链接的库
缺少动态连接库.so--cannot open shared object file: No such file or directory
总结下来主要有3种方法:
ln -s /where/you/install/lib/*.so /usr/lib // -s选项不懂意思
sudo ldconfig //加载配置项? 用来刷新共享库缓存 详细请见: ldd和ldconfig命令2013-02-06
// 我是用第一种方法完成了修改 但是不太懂 sudo ldconfig 的意思 大概是加载配置项吧
export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH
sudo ldconfig
vim /etc/ld.so.conf
add /where/you/install/lib
sudo ldconfig
Q4: 怎么把linuxc++项目转化成qt项目
要把Linux C++项目转化为Qt项目Linux命令行编译qt,您可以通过Qt Creator和Qt Visual Studio插件来实现。在Qt Creator中Linux命令行编译qt,您可以在“文件”菜单中进行项目的导入工作,将Linux C++项目导入Qt Creator,然后就可以开始开发Qt项目了。
Linux命令行编译qt的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、Linux命令行编译qt的信息别忘了在本站进行查找喔。







