在Linux

时间:2016-07-05 16:04:08

标签: linux qt deployment qt5 qt-creator

这可能是一个菜鸟问题,但我一直试图找出如何在linux上静态构建我的qt项目。我尝试按照http://doc.qt.io/qt-5/linux-deployment.html的说法去做,但我不明白第一步。当我cd到我的qt项目的位置并运行     

cd /path/to/Qt
./configure -static -prefix /path/to/Qt <otherparameters>
make
 它说没有这样的文件或目录。我误解了需要使用的路径吗?我想让我的qt项目成为一个独立的可执行文件,它不需要它所拥有的计算机有qt。我已经阅读过关于动态链接库的内容,但我真的不知道如何处理它。部署选项在qtcreator中显示为灰色,有没有办法使用它? 谢谢

2 个答案:

答案 0 :(得分:0)

/home/jxb458/qt5应该是Qt来源的路径,而不是你的项目。 --gulpfile flag文档是关于静态构建Qt的,在尝试将应用程序静态链接到Qt之前必须执行此操作。例如,如果您将来源下载/克隆到/path/to/Qt,那么您可以将cd /home/jxb458/qt5 ./configure -static -prefix /home/jxb458/qt5/qtbase make 替换为:

class SomeClass {
  someMethod() {
    console.log('in someMethod');
  }
}

function getFunctionName(classRef, functionRef) {
  for (const memberName in classRef.prototype) {
    const memberValue = classRef.prototype[memberName];
    if (memberValue === functionRef) {
      return memberName;
    }
  }  
}

const name = getFunctionName(SomeClass, SomeClass.prototype.someMethod);
console.log(`function name is ${name}`);

答案 1 :(得分:0)

静态链接在工作时很棒,但它可能是一种努力 - 我特别在使用GUI时发现。正如Mitch所说,你需要重新构建Qt源代码

当我在这里静态构建时,我做了一些注释:Notes on static building(源自许多来源)他们至少应该指向正确的方向 - 你可以忽略关于安装Ubuntu的部分 - 这些笔记假设是新的安装。

但是我最近又回到了动态链接部署,因为我觉得这是一种更好的部署方式。您不需要在目标计算机上安装Qt,您只需要收集qt dll并将其与您的应用程序一起复制(使用ldd executable-name生成您需要的dll列表 - 但只需使用Qt不是系统/通用的)。对于插件,你需要做更多(但它相当简单)。我甚至编写了一个bash脚本来自动执行此操作(如果需要,我会将其发送给您),在Windows中有一个名为windeployqt的qt脚本(不知道为什么没有linux变体)。

如果我再次开始研究部署,我会选择动态链接。也许尝试一个简单的项目开始(像一个hello world proj)。

相关问题