Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Windows上使用QtCreator为Linux构建和调试应用程序?_C++_Linux_Qt Creator_Cross Compiling_Remote Debugging - Fatal编程技术网

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

C++ 如何在Windows上使用QtCreator为Linux构建和调试应用程序?,c++,linux,qt-creator,cross-compiling,remote-debugging,C++,Linux,Qt Creator,Cross Compiling,Remote Debugging,我是习惯于VisualStudio社区的Windows开发人员。现在我开始在嵌入式设备(Raspberry Pi、C.H.I.P)和PC上开发Linux 我发现Visual Studio有两个针对Linux开发的选项: VisualGDB-用于交叉编译和远程调试的VisualStudio扩展,但对于我当前的预算来说成本太高了 Li > < P>微软的扩展:Visual C++为IoT开发和Visual C++开发Linux,但它们是BGGY,它们复制每个构建上的每个文件,并且很难配置“Lin

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

我发现Visual Studio有两个针对Linux开发的选项:

  • VisualGDB-用于交叉编译和远程调试的VisualStudio扩展,但对于我当前的预算来说成本太高了

  • <> Li > < P>微软的扩展:Visual C++为IoT开发和Visual C++开发Linux,但它们是BGGY,它们复制每个构建上的每个文件,并且很难配置“Linux方式”(没有完整的/CMASK支持,必须在远程机器上使用绝对包含路径)而且Intellisense也不能可靠地工作

因此,我准备尝试一些比VisualStudio限制更少但质量和工作流程有点类似的东西,我目前最好的选择似乎是QtCreator

如何从运行在Windows机器上的QtCreator实现Linux构建

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

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

既然你说交叉工具链不是问题,那么我选择的最大参数就是项目的大小和编译时间。如果这是一个可以在几分钟内交叉构建的项目,我会选择本地选项

交叉编译时有关先决条件的几点注意事项: 您应该拥有交叉编译设备的sysroot,链接器将从中获得所有未动态链接的适当库

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


这是一个重要的话题:)我建议你提出子问题,这样我们可以一步一步地形成答案。

我使用Qt creator是一次很好的体验。将x86Linux转换为ARMV7Linux。然而,获得实际的工具链是相当容易的。您是否有一个可供Windows交叉编译Arm的交叉工具链?它与IDE无关。也许。顺便说一句,只要你有SDK、工具链和交叉编译器,你就可以配置一个QTCreator工具包来做你需要的事情。@Alan-我想,工具链应该不是问题-有很多选项,但我不确定我是应该交叉编译还是远程编译,因为我不知道哪个选项更适合QTCreator,考虑到IDE中的自动完成、错误突出显示和调试。