这可能是一个菜鸟问题,但我一直试图找出如何在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中显示为灰色,有没有办法使用它?
谢谢
答案 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)。