如何在 Windows 上使用 QtCreator 为 Linux 构建和调试应用程序?

Posted

技术标签:

【中文标题】如何在 Windows 上使用 QtCreator 为 Linux 构建和调试应用程序?【英文标题】:How to use QtCreator on Windows to build and debug applications for Linux? 【发布时间】:2016-10-17 19:00:39 【问题描述】:

我是习惯于 Visual Studio 社区的 Windows 开发人员。现在我开始在嵌入式设备(Raspberry Pi、C.H.I.P)和 PC 上为 Linux 进行开发。

我发现 Visual Studio 有两个可供 Linux 开发的选项:

VisualGDB - 用于交叉编译和远程调试的 Visual Studio 扩展,但对于我目前的预算而言,它的成本太高了

全新的 Microsoft 扩展:用于 IoT 开发的 Visual C++ 和用于 Linux 开发的 Visual C++,但它们有缺陷,它们在每次构建时复制每个文件,并且难以配置“Linux 方式”(没有完整的/cmake 支持,必须在远程机器上使用绝对包含路径)并且 Intellisense 不能可靠地工作。

所以我已经准备好尝试一些比 Visual Studio 限制更少但质量和工作流程有些相似的东西,而我目前的最佳选择似乎是 QtCreator。

如何在 Windows 机器上运行 QtCreator 为 Linux 构建

哪种方法受 QtCreator 支持或效果更好(提供自动完成和调试便利) - 交叉编译和复制二进制文件并启动 GDB,或远程构建项目(但可以选择不复制文件,在如果我在 Samba 共享文件夹上构建)?

【问题讨论】:

我使用过 Qt creator 是一次不错的体验。 x86 Linux 到 armv7 Linux。但是,获得实际的工具链非常容易。您是否有可用于 Windows 的交叉工具链来为 Arm 进行交叉编译?它与 IDE 无关。 也许this post could help。顺便说一句,只要您有 SDK、工具链和交叉编译器,您就可以配置 QTCreator 工具包来满足您的需求。 @Alan - 我想,工具链应该不是问题 - 有很多选择,但我不确定我应该交叉编译还是远程编译,因为我不知道考虑到自动完成、错误突出显示、IDE 中的调试,哪个选项更适合 QtCreator。 【参考方案1】:

哪种方法受支持或效果更好(提供自动完成 和调试方便)与 QtCreator

鉴于您说跨工具链不是问题,我选择的最大参数是项目的大小和编译时间。如果它是一个可以在几分钟内交叉构建的项目,我会选择本地选项。

交叉编译时的先决条件的几点说明: 您应该有一个交叉编译设备的 sysroot,链接器将从该设备获取所有未动态链接的适当库。

在远程调试时,我发现了以下最佳实践。您必须有两个调试应用程序,gdb 和 gdbserver。当您在主机上运行 gdb 时,gdbserver 在嵌入式设备上运行。为了能够在运行时单步执行代码,您需要使用调试符号进行交叉编译。如果设备有足够的内存,您可以在设备上部署带有调试符号的整个二进制文件。

这是一个很大的话题 :) 我建议您提出子问题,以便我们逐步形成答案。

【讨论】:

以上是关于如何在 Windows 上使用 QtCreator 为 Linux 构建和调试应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator - 在 Windows 上构建持续时间更长

使用 LLVM 在 Windows 上使用 QtCreator 设置 Cocos2dx 项目

如何在 Windows 7 64 位上设置 MinGw? [关闭]

使用 QT Creator,如何制作不需要在目标平台上安装 .dll 的 Windows 可执行文件? [复制]

在 Windows 上使用 Qt Creator 设置 ccache

在 Windows 上使用 Qt Creator 进行调试时未显示 QStrings