您尚未登录。

楼主 # 2021-12-11 13:28:48

阿黄
会员
注册时间: 2018-10-03
已发帖子: 299
积分: 134

使用VS2019远程调试Openwrt linux程序

一、使用官网镜像创建VMware虚拟机镜像
1.1 下载镜像

首先在openwrt镜像站下载镜像,这里我选择了清华的openwrt镜像站,Openwrt版本是19.07.3-x86。其他版本可以自行查找。链接如下openwrt-19.07.3-x86-generic-combined-ext4.img.gz) ,镜像很小,只有8M。

下载下来之后,使用7z解压到我们需要的目录,解压之后文件为 openwrt-19.07.3-x86-generic-combined-ext4.img

我们开始制作Vmware系统镜像。这里要用到的软件如下:

  1. StarWind V2V Converter

  2. Vmware Workstation

  3. 以及第一步下载的openwrt img镜像

以下操作假设你已经安装好了Vmware和StarWind V2V软件,安装教程网上都有。

1.2 生成虚拟磁盘文件

打开StarWind V2V软件,按照如下步骤

  1. 选择Local file

  1. 这里的File name选择你之前解压出来的img文件。选择Next

  1. 选择Next

  1. 选择VMDK,点击Next

  1. 这里我喜欢选择预分配的镜像,而不是增长的镜像,是因为可增长的镜像删除文件后,并不会归还空间。导致镜像越来越大。具体如何增加镜像大小,后面讲,这里原始的官方镜像空间是273M.

点击Next

  1. 这里选择你vmdk文件存放的位置。然后点击Convert

  1. 转换完成后,点击Finsh

1.3 创建虚拟机
1. 打开vmware,新建虚拟机,根据以下截图步骤进行操作,具体镜像存放路径请根据自己的情况自行选择目录。

注意,这里磁盘大小可以随便选,我们并不用这个磁盘文件。

1.2 替换磁盘文件

注意下面的文件名都是跟你创建虚拟机时虚拟机的名称有关系,我虚拟机名是Openwrt-19.07.3-x86,因此磁盘镜像名就是 Openwrt-19.07.3-x86.vmdk

  1. 创建虚拟机完成后,我们先不启动(当然启动也启动不了)。找到虚拟机存放目录,我这里是(F:\vmware\Openwrt-19.07.3-x86)。删除目录下自动生成的vmdk文件,我这里是Openwrt-19.07.3-x86.vmdk。

  2. 将之前使用starConvert转换生成的两个文件文件拷贝到虚拟机目录下

   openwrt-19.07.3-x86-generic-combined-ext4.vmdk
   
   openwrt-19.07.3-x86-generic-combined-ext4-flat.vmdk
   

并将名字分别改为

   openwrt-19.07.3-x86.vmdk
   
   openwrt-19.07.3-x86-flat.vmdk
   

效果如下图

  1. 用文本文件打开Openwrt-19.07.3-86.vmdk,修改链接的磁盘文件名为 Openwrt-19.07.3-x86-flat.vmdk

1.3 配置虚拟机
  1. 虚拟机设置里面,新增一个磁盘,这里我选择的是2G,增加完成后应该是2个磁盘

  1. 启动虚拟机Openwrt-19.07.3-x86,没有意外的话,应该可以启动了。

Tips: 第一次启动的时候会提示下图,实际上是提示的DVD,点否即可

  1. 见到如下图,说明启动成功

1.4 修改网络,这一步不是必须的,我这里是因为只配置了一个网口,所以将其配置为WAN0口。

这一步也可以使用luci登录后网页方式修改。

  1. 在虚拟机窗口里面单击进入。回车,进行配置

   vi /etc/config/network
   

配置成下图

   vi /etc/config/firewall
   

将WAN口的入口方向改为ACCEPT打开

  1. reboot 重启。

  2. 等待重启完成后,再次单击并回车进入shell,ifconfig查看dhcp获取到的IP地址。我这里是192.168.106.130

二、 配置openwrt

Tips1:首次登陆没有密码,直接按回车即可登录。

Tips2:下面的操作也可直接用shell命令直接修改。

  1. 设置密码,在System->Administration中随意设置

  1. 更新软件包列表

  1. 更新完成后,安装以下软件包

   luci-i18n-base-zh-cn	#中文语言包
   cfdisk	# 磁盘工具
   block-mount # 挂载工具
   
  1. 新增的磁盘要手动初始化成ext4,

ssh登录到openwrt。

   mkfs.ext4 /dev/sdb     
   
  1. 进入luci的挂载点,新增挂载点,这里我想挂载到的是/root目录

然后保存并应用。

  1. 继续安装以下软件包。

有些包比较大,可以直接去 https://mirror.tuna.tsinghua.edu.cn/openwrt/releases/19.07.3/packages/i386_pentium4/packages/ 下面下载

   # 编译相关
   make
   gdb
   gdbserver
   gcc  # 这个比较大,可以直接到清华镜像网站去下载,然后上传上去安装
   
   openssh-server
   openssh-sftp-server
   rsync
   coreutils-tty
   
   
  1. 编译并安装zip

这个是因为openwrt未提供,但vs2019又需要,所以自行编译。下载https://nchc.dl.sourceforge.net/project/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz。并传到/root目录

   cd /root
   tar -xzvf zip30.tar.gz
   cd zip30
   

修改unix/Makefile ,将prefix=/usr/local 改为 prefix=/usr

   vi unix/Makefile
   

开始编译

   make -f unix/Makefile generic_gcc
   make -f unix/Makefile install
   /usr/bin/zip #检查是否安装正确
   
  1. 下面修改dropbear为openssh

参考:https://blog.csdn.net/Kenon_Lin/article/details/80976162修改 /etc/ssh/sshd_config 将#PermitRootLogin without-password 修改为 PermitRootLogin yes

   vi /etc/ssh/sshd_config
   

修改dropbear的端口

uci set dropbear.@dropbear[0].Port=2222
uci commit dropbear
/etc/init.d/dropbear restart
reboot #重启生效
三、VS2019 配置
  1. 安装VS2019社区版,直接选择以下项即可

  1. 创建C++控制台项目,进行测试

  1. 工具->选项->跨平台。增加一个ssh连接

  1. 编译工程,成功。可以直接进行在线调试

后续

在编写C代码时,涉及到头文件路径的设置。可能会提示找不到头文件。

  1. 对于系统头文件,如 stdio.h stdlib.h等等,首先要包含目标系统的include目录

本地最好也拷贝一份include文件。下载并解压到本地目录,这里解压到:\Users\ucgs\source\repos\

tar -cvf include.tar /usr/include

并设置头文件包含目录

2. 动态库也差不多设置方法

最近编辑记录 阿黄 (2021-12-11 14:09:46)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发