您尚未登录。

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

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

使用VS2019远程调试Openwrt linux程序

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

        首先在openwrt镜像站下载镜像,这里我选择了清华的openwrt镜像站,Openwrt版本是19.07.3-x86。其他版本可以自行查找。链接如下[openwrt-19.07.3-x86-generic-combined-ext4.img.gz](https://mirror.tuna.tsinghua.edu.cn/openwrt/releases/19.07.3/targets/x86/generic/openwrt-19.07.3-x86-generic-combined-ext4.img.gz) ,镜像很小,只有8M。
1639190660489.png

下载下来之后,使用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

1639191011777.png

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

1639191247662.png

3.  选择Next

1639191301647.png

4. 选择VMDK,点击Next

1639191318549.png

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

   点击Next

1639191358208.png

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

1639191503167.png

7. 转换完成后,点击Finsh

1639191565152.png

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

1639191662811.png

1639191675188.png

1639191689561.png

1639191731076.png

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

1639191765643.png

1639191777209.png

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
   

   效果如下图

   1639192565127.png

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

   1639192776253.png

1.3 配置虚拟机

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

  1639194166475.png

   

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

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

   1639192908914.png

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

   1639192961988.png

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

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

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

   

   vi /etc/config/network
   

   配置成下图

   1639193235104.png

   

   vi /etc/config/firewall
   

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

   1639193355822.png

2. reboot 重启。

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

   1639193467291.png

## 二、 配置openwrt

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

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

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

   1639193728421.png

2.  更新软件包列表

   1639193773344.png

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

   

   luci-i18n-base-zh-cn	#中文语言包
   cfdisk	# 磁盘工具
   block-mount # 挂载工具
   

4.  新增的磁盘要手动初始化成ext4,

   ssh登录到openwrt。

   

   mkfs.ext4 /dev/sdb     
   

5. 进入luci的挂载点,新增挂载点,这里我想挂载到的是/root目录

   1639194738375.png

   

   1639194799334.png

   然后保存并应用。

   1639194835776.png

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

   有些包比较大,可以直接去 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
   
   

7.  编译并安装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
   

   1639197505049.png

   开始编译

   

   make -f unix/Makefile generic_gcc
   make -f unix/Makefile install
   /usr/bin/zip #检查是否安装正确
   

8.  下面修改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社区版,直接选择以下项即可

   1639196267311.png

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

1639196321054.png

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

   1639198184178.png

   1639198154429.png

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

   1639198257897.png

   1639198466480.png



后续

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

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

   1639198777407.png

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

tar -cvf include.tar /usr/include

并设置头文件包含目录

1639199030262.png

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

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

离线

页脚

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

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