【发布时间】:2021-04-19 05:47:39
【问题描述】:
是否有方法或步骤可以将 yocto SDK(标准或可扩展)与 VSCode 集成?我想使用 yocto 生成的 Linux 映像在 VSCode 中为目标硬件交叉编译、远程连接和调试 C/C++ 应用程序。这可能吗?我知道 bitbake 扩展,但找不到适用于 SDK 的扩展。谢谢!
【问题讨论】:
是否有方法或步骤可以将 yocto SDK(标准或可扩展)与 VSCode 集成?我想使用 yocto 生成的 Linux 映像在 VSCode 中为目标硬件交叉编译、远程连接和调试 C/C++ 应用程序。这可能吗?我知道 bitbake 扩展,但找不到适用于 SDK 的扩展。谢谢!
【问题讨论】:
保守地说,我会说这取决于您想要实现的集成级别,但我经常使用 VS Code 来编辑和构建,有时使用 Yocto 工具链调试 C 应用程序,这对于 Makefile 项目来说真的很容易。
假设您不要求将 Yocto 集成到 VS Code 中(我不知道是否存在),而是真正使用 Yocto 的 SDK 生成的工具,并且您已经熟悉 Yocto 工具链的使用。
我个人从 Windows PC 远程在 Linux 服务器上编译。因此,服务器包含我的项目和 Yocto 工具链。 为此,我在 VS Code 上使用来自 Microsoft 的漂亮 Remote SSH extension。从那里,我可以轻松地编辑文件、编译并且可以使用终端(但这超出了您的问题范围)。
因此,如果像我一样工作或直接在 Linux 中工作,您可以创建一个 Makefile/CMake 项目,例如。 C/C++ VS Code extension 是必须的。
每次开始工作时,您都可以获取 Yocto SDK 工具链并直接使用 VSCode 终端窗口中的 make 进行编译。如果你想自动化构建步骤,你可以使用 VS 的task feature,例如它允许你启动构建脚本。
关于远程连接,VS 的终端窗口也可以有多个子窗口,通过 SSH 等各种连接到目标。构建脚本也可以使用 scp 将生成的二进制文件直接发送到目标,但您的问题对于您想要做什么含糊其辞。
最后在调试方面,VS Code 很好地支持 GDB,official doc 和C++ debugging doc 是一个好的开始。
在 Yocto 端,您需要将 gdbserver 添加到目标上运行的映像中,可以通过将以下内容添加到您的 conf/local.conf 来完成:
EXTRA_IMAGE_FEATURES += "tools-debug"
如果您想获得目标上共享库的调试信息,您还需要添加:
EXTRA_IMAGE_FEATURES += "dbg-pkgs"
最后,SDK 必须使用与目标上运行的映像相同的选项生成,并且将包含要在主机端使用的跨 gdb 工具,例如 -gdb。
所以这是可能的,但需要一些设置,尤其是调试部分。据我所知,没有 VS Code 扩展可以自动为您管理所有这些步骤。
【讨论】: