Visual Studio交叉编译ARM工程

这篇具有很好参考价值的文章主要介绍了Visual Studio交叉编译ARM工程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、环境准备

1.1、软件安装

在Windows10/Windows11系统上安装Visual Studio 2022和装有Linux系统的虚拟机VMware Workstation Pro。(这里以Visual Studio 2022为例,也可以换成其它支持远程调试的工具版本如Visual Studio 2019及更高的版本)

注意:安装Visual Studio 2022时一定要勾选上“使用C++的Linux和嵌入式开发”的工具集。

虚拟机安装完成后,进行Linux系统的安装。

注意:明确系统的cpu架构,是x86、x64、ARM还是ARM64,这在之后的Visual Studio中需要选择编译平台。

1.2、Linux系统环境配置

  1. 配置Linux系统的SSH连接

以ubuntu16.04为例,需要在Linux系统上安装可进行C++程序编译以及远程调试的包。使用如下命令:

sudo apt-get install openssh-server g++ gdb gdbserver -y

  1. Linux系统交叉编译链的设置

以rk3399交叉编译链为例进行说明。需要注意的是rk3588使用的也是这个交叉编译链工具。交叉编译链工具存放目录为RK3399/linuxsdk-friendlyelec/buildroot/output/rockchip_rk3399/host/bin/ 其中部分工具的截图如下:

visual studio 交叉编译,arm开发,c++,visual studio

2、Visual Studio 2022交叉编译ARM工程项目

2.1、设置远程连接

  1. 在 Visual Studio 中,依次选择菜单栏上的“工具”>“选项”,以打开“选项”对话框。 然后,依次选择“跨平台”>“连接管理器”,以打开“连接管理器”对话框。如果你以前没有在 Visual Studio 中设置过连接,Visual Studio 会在你首次生成项目时,为你打开“连接管理器”对话框。

visual studio 交叉编译,arm开发,c++,visual studio

  1. 设置完成以后就可以开始写代码测试了。执行程序的地方,默认会出现上面配置的远程Linux系统的IP地址。

visual studio 交叉编译,arm开发,c++,visual studio

  1. 如果需要使用Linux控制台与应用进行交互,请选择“调试”->“Linux控制台”。

visual studio 交叉编译,arm开发,c++,visual studio

  1. 上图中点击“开发者PowerShell”下拉菜单,出现如下图所示的选项。

visual studio 交叉编译,arm开发,c++,visual studio

  1. 选择需要进行远程连接的系统,以本地虚拟机中的ubuntu系统yy@192.168.117.128为例,连接成功会出现如下所示:

visual studio 交叉编译,arm开发,c++,visual studio

  1. 在Linux控制台里可以像在Linux系统里的终端一样进行操作,例如进行文件的查看和代码编译等。

2.2、在Visual Studio中进行ARM工程的配置和交叉编译

创建一个C++的Linux控制台应用程序项目存储在本地。根据远程Linux系统的CPU架构,选择对应的配置。由于要使用交叉编译链进行ARM应用程序的生成。选择配置为ARM或ARM64。以ARM64为例进行说明。

按照ARM工程的目录结构,新建筛选器如下图。

在各筛选器下依次添加原ARM工程代码文件。这种方法对于其它需要在VS2022编译Linux程序的项目也适用。

visual studio 交叉编译,arm开发,c++,visual studio

配置项目属性,如下:

对于ARM64平台的所有配置,其常规设置可以一致。修改目标文件名,删除目标文件扩展名.out,与原ARM工程应用程序文件名保持一致。平台工具集选择GCC for Remote Linux,远程生成计算机由远程连接时填入的信息生成,远程根目录为”~/projects”。

调试属性中,要启动的调试器为远程GDB调试程序。调试模式有gdb和gdbserver。gdb调试是应用程序在开发板上运行,然后在PC机上对开发板上的应用程序进行调试,PC机运行gdb,开发板上运行gdbserver。在应用程序调试的时候,pc机上的gdb向开发板上的gdbserver发出命令,开发板上的gdbserver会向应用程序发出信号,使应用程序停下来或者完成一些其它工作。

visual studio 交叉编译,arm开发,c++,visual studio

visual studio 交叉编译,arm开发,c++,visual studio

远程调试器类型分为gdb和lldb。gdb是Unix和类Unix系统下的调试工具,lldb是个开源的具有REPL(read-eval-print-loop,读取-评估-打印-循环)特征的Debugger。

调试属性中的其它选项按照默认设置。

VC++目录属性设置可以略过。

复制源属性设置如下图。均是默认设置。需要注意的是远程复制源方法,VS2022中提供了rsync和sftp。这两种工具均可通过SSH传输文件。rsync是一个用于*unix系统的文件同步和文件传输程序,可通过使用一种增量编码形式来最小化网络数据传输,这样只有源数据和目标数据之间的差异才会被传输。sftp是用于在两台机器之间进行安全复制的基本命令行工具。sftp协议允许对远程文件进行一系列操作,包括恢复中断的传输、查看目录列表和删除远程文件等。

visual studio 交叉编译,arm开发,c++,visual studio

C/C++属性配置见下图C/C++所有选项,其中需要注意的是交叉编译链的设置(查了一下,目前网络上还没有这样简便的方法,算是独家配方了)。C编译器和C++编译器均设置为虚拟机ubuntu目录下的交叉编译链路径,以本机使用的交叉编译链工具为例,设置为 “home/yy/RK3399/linuxsdk-friendlyelec/buildroot/output/rockchip_rk3399/host/bin/aarch64-buildroot-linux-gnu-g++”。

附加包含目录按照ARM工程中的源代码所处目录进行设置。

C/C++属性配置中其它选项按照默认设置进行。

链接器属性配置见下图链接器所有选项。需要注意的是附加库目录、库依赖项和链接器。附加库目录设置为远程系统中库文件所在的目录。

visual studio 交叉编译,arm开发,c++,visual studio

以本机使用的静态库libBase.a和libxxxx.a为例,因为xxxx以及程序中代码依赖pthread,在库依赖项中添加

pthread

Base

xxxxx

visual studio 交叉编译,arm开发,c++,visual studio

注意:在VS2022中添加静态库,不需要写lib或.a,只需要写静态库名称即可。

至此ARM工程的VS2022配置项完成。

接下来右键点击工程,选择生成,结果如下图所示,成功通过交叉编译链生成ARM应用程序。

visual studio 交叉编译,arm开发,c++,visual studio

同样,可以生成release版的ARM应用程序,如下图。

visual studio 交叉编译,arm开发,c++,visual studio

生成的应用程序不仅在本地存了一份,而且自动复制了一份到远程系统工程对应的目录里,如下图所示。

将执行程序通过远程工具拷贝至ARM开发板,赋予执行权限后,启动程序可以正常执行,使用远程工具拷贝后结果以及在终端执行命令后效果如下图所示。

visual studio 交叉编译,arm开发,c++,visual studio

visual studio 交叉编译,arm开发,c++,visual studio

visual studio 交叉编译,arm开发,c++,visual studio

visual studio 交叉编译,arm开发,c++,visual studio文章来源地址https://www.toymoban.com/news/detail-848301.html

到了这里,关于Visual Studio交叉编译ARM工程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • x86架构ubuntu 搭建arm64交叉编译环境及QT编译arm64架构工程

    背景:由于最近项目需要做国产系统适配,很多软件需要重新编译以适配不同架构CPU。 环境: 1、主机win10 64bit   vmware虚拟主机ubuntu1804 64bit 2、vmware虚拟主机已经安装了qt5.14.2及qt_create4.11.1 一、C/C++程序交叉编译 1、交叉编译环境搭建 ①选定编译工具aarch64-linux-gnu ②安装交叉

    2024年02月09日
    浏览(66)
  • visual studio编译QtAV

       1.1 依赖环境 第一种方法: 下载编译好的ffmpeg-3.4.2-win64-dev和ffmpeg-3.4.2-win64-shared,解压得到 D:qt-workspaceffmpeg-3.4.2-win64-dev D:qt-workspaceffmpeg-3.4.2-win64-shared   第二种方法: QtAV官方有提供编译好的依赖库 QtAV-depends-windows-x86%2Bx64.7z,解压得到 D:qt-workspaceQtAV-depends-windows-x86+x

    2024年02月05日
    浏览(39)
  • visual studio 编译cmake项目

    当编译出现问题 message(FATAL_ERROR \\\"The C compilern  \\\"${CMAKE_C_COMPILER}\\\"n\\\"       \\\"is not able to compile a simple test program.nIt fails \\\"       \\\"with the following output:n  ${_output}nn\\\"       \\\"CMake will not be able to correctly generate this project.\\\") 控制台提示如下: 1 已为默认配置“x64-Debug”启动 CMake 生成

    2024年02月06日
    浏览(60)
  • visual studio编译c++问题处理

    严重性    代码    说明    项目    文件    行    禁止显示状态 错误    C2760    语法错误: 意外的令牌“标识符”,预期的令牌为“;” 严重性    代码    说明    项目    文件    行    禁止显示状态 错误    C7510    “string_view”: 类型 从属名称的使用

    2024年02月11日
    浏览(39)
  • Visual Studio(2015)如何打开Visual Basic 6.0 *.vbp工程?

        以下以Visual Basic创建简易的Windows窗体应用程序为例。     众所周知,Visual Studio(这里以Visual Studio 2015为例)这个被一些人称为宇宙最强的IDE,可以创建Visual Basic工程进行代码编辑。     这样的Visual Basic工程操作路径:文件→新建→项目...→已安装→模板→Visual Basic→

    2024年02月04日
    浏览(91)
  • Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程

    苦辣酸甜时光八载,春夏秋冬志此一生 Qt简介: Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。 Qt 支持的操作系统有很多,例如通用

    2024年01月23日
    浏览(51)
  • Visual Studio2012编译成功却报错

    使用Visual Studio2012编写windows窗体应用点击运行后编译成功却报错 使用Visual Studio2012编写windows窗体应用点击运行后编译成功却报错:尝试运行项目时出错: Uncaught exception thrown by method calledthrough Reflection.但是如果是ctrl+F5则可以正常运行。错误提示如下: 1.在安装vs时缺少有关配置

    2024年02月05日
    浏览(66)
  • detour编译问题及导入visual studio

    Detours是经过微软认证的一个开源Hook库,Detours在GitHub上,网址为 https://github.com/Microsoft/Detours 注意版本不一样的话也是会出问题的,因为我之前是vs2022的所以之前的detours.lib不能使用,必须用对应版本的x64 Native Tools Command Prompt for VS工具进行编译 我这里使用的visual studio2019版本

    2024年02月11日
    浏览(42)
  • Visual Studio中使用预编译头文件

    预编译头文件 (Precompiled Header,PCH)是一种C/C++编译优化技术,用于提高大型项目的编译速度。PCH 文件包含了常用的头文件的预编译结果,它可以在编译其他源文件之前被加载到内存中,从而减少了重复的头文件解析和编译时间。 作用 :PCH 的主要作用是加速编译过程。在大

    2024年02月09日
    浏览(53)
  • Visual Studio 2010环境新建C工程项目

    学习C语言使用的编译器比较多,常见的有VC++6.0、Dev-C++、Visual Studio、CodeBlocks等环境软件。 Visual Studio和CodeBlocks的功能就稍微强大许多,但是其操作的步骤也相对复杂些,Dev-C++的操作简便,功能也相对少些,对于编写学习基础简单的C代码已经足够了的。 选择编译器一般根据

    2024年02月06日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包