修改$QTDIR/mkspecs目录下的符号链接default.将其指向linux-g++
创新互联-专业网站定制、快速模板网站建设、高性价比龙胜网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式龙胜网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖龙胜地区。费用合理售后完善,十余年实体公司更值得信赖。
$QTDIR是路径,具体要看你把QT装到什么地方和QT本身的版本,一般是/usr/lib[64]/qt4
修改default符号链接的作用是让qmake在生成Makefile的时候将Makefile文件中的编译器变量$CC与$CXX赋值成gcc和g++
图形界面下,直接下载qtcreate,libqt4-dev,qt5defaule-dev 第一个是编辑软件,后两个是库,如需其他另外找。命令行模式的话,不知道怎么在没有图形界面下运行对话框的程序,命令行模式运行qt命令行格式的,直接qmake,make。就可以了。里面那个没有后缀的就是运行程序了,./程序名 运行 不行就加权限 chmod +x ***.
QString program = "./path/to/Qt/examples/widgets/analogclock";
QStringList arguments;
arguments "-style" "motif";
QProcess *myProcess = new QProcess(parent);
myProcess-start(program, arguments);
// 修改系统时间很简单 // 采用QProcess来实现QProcess::exectu("date 031210252014"); // 0312 表示3月12日,1025表示当前时分QProcess::exectu("hwclock -h); // 同步系统时间Qprocess::exectu("sync"); // 保存配置
qt 调用linux系统命令修改系统时间,直接输入代码修改系统时间即可。
有个这类 QProcess
QProcess p(0);
QString command = "";
QStringList args;
QString strTemp = "";
QStringList tmpList;
/**
* 调用 hostname 命令 获取机器名
================================================================ */
QString hostname = "";
command = "hostname";
args.clear();
p.start( command,args );
p.waitForFinished();
strTemp = QString::fromLocal8Bit( p.readAllStandardOutput() );
hostname = strTemp.replace( "\n","").trimmed();
qDebug()"hostname:" hostname;
出问题的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不同!一定一定要适合自己的程序