Visual Studio 2017开发linux程序使用实例及原理简析
1.下载安装vs开发linux程序的工具包
2.创建一个工程,选择跨平台里面的linux平台
3.写一段测试代码,这里就可以包含linux的系统头文件编译,不过vs下还是现实红的
#include <cstdio>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>#include <iconv.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/file.h>
#include <unistd.h>
#include <sys/mman.h>
#include <fcntl.h>#include <string>
#include <iostream>
#include <istream>
#include <iosfwd>
#include <sstream>
#include <fstream>
using namespace std;int fd_ = 0;
int size_ = 0;
char *buff_ = nullptr;void open_file(std::string file_name)
{fd_ = open(file_name.c_str(), O_RDONLY);if (fd_ == -1){size_ = 0;}else{struct stat st;int r = fstat(fd_, &st);if (r == -1){size_ = 0;close(fd_);}else{size_ = st.st_size;}}
}void unmap_file()
{if (fd_ != -1){close(fd_);munmap(buff_, size_);}
}
//if data is too big,create file spilt more file_index,mmap more times(hfrz ptr as start addr)
int mmap_file(int fd, char *buff)
{if (fd == -1){return -1;}buff = (char *)mmap(NULL, size_, PROT_READ, MAP_PRIVATE, fd_, 0);if (buff == (void*)-1){std::ostringstream oslog;oslog << "mmap failed:" << strerror(errno);cout << oslog.str() << endl;close(fd);return -1;}return 0;
}int main()
{char *buff = (char *)malloc(1024);const char *str = "hello world";memcpy(buff, str, strlen(str)+1);printf("hello from ConsoleApplication1!\n");mmap_file(23, buff);getchar();return 0;
}
然后选中调试,就弹出一个输入远程主机的信息,这里就和xshell使用ssh协议连接信息一样的输入:
4.编译调试,有个调试窗口要调出来,然后就可以看见linux控制台的输出信息了
编译输出控制台
5.登陆远程主机,可以看见启动的程序和源代码了
6.简要的分析一下原理
从vs编译的输出控制台我们可以看出编译是使用mingw32交叉编译,然后使用ssh协议将源代码拷贝到目标主机,看见gdbserver进程了,应该是vs使用ssh协议作为client与远程主机的gdbserver调试
一些配置信息也说明了这一点:
Visual Studio 2017开发linux程序使用实例及原理简析相关推荐
- Visual Studio 2017开发linux程序之libevent使用实例
下载源码编译安装后,samle里面有个hello-world.c就是最简单的一个tcp server端程序了 /*This example program provides a trivial ser ...
- 如何用 Visual Studio 2017 开发 Arduino 应用程序
如何用 Visual Studio 2017 开发 Arduino 应用程序 使用Visual Studio 2017 开发 Arduino 应用程序需要两个软件: Visual Studio Vis ...
- 使用 Visual Studio 2022 开发 Linux C++ 应用程序
使用 Visual Studio 2022 开发 Linux C++ 应用程序 前置条件: Windows上需要先安装 WSL2,方法见: Install WSL | Microsoft Docs 在 ...
- DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建
DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建 DCMTK 362MD支持库与Microsoft Visual Studio 2017开发 ...
- 使用Visual Studio 2017开发Windows UWP应用
使用Visual Studio 2017开发Windows UWP应用 今天开始学习Windows UWP应用开发 学习的视频资料来自Bilibili上"微软信仰中心"添加翻译字幕 ...
- vs2017 linux工程设置头文件,使用Visual Studio 2017作为Linux C++开发工具
Visual Studio 2017 VS2017亮点很多,包括模块化安装.启动速度加快(第一次启动加快50%以上).github插件.启动页完善.增强代码提示功能,等等,更多参考:https://w ...
- 使用Visual Studio 2017作为Linux C++开发工具
Visual Studio 2017 微软的宇宙第一IDE Visual Studio 2017正式版出来了,地址是:https://www.visualstudio.com/vs/whatsnew/ ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
最近有对一个Windows应用程序少许维护和修改.修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下. Visual Studio版本:Visual St ...
- 使用Visual Studio Code开发.NET程序
Visual Studio Code 成为个人使用频率最高的应用程序了,层出不穷的插件为 Code 的应用场景提供了无限可能.本文介绍在 Visual Studio Code 中开发 .NET 程序的 ...
最新文章
- pip install python-docx报错_python各种模块的安装
- 服务端渲染vs客户端渲染到前后端同构
- qt中的update()
- oracle 10g安装黑框消失,win7下安装和卸载oracle 10g
- PANEL中显示窗体
- 第30课 棋盘上的学问 《小学生C++趣味编程》
- python上传文件 request_Python request 上传文件
- 是谁开发出手机曲面屏这种
- linux查询文件md5sum,Linux下通过md5sum生成MD5文件校验MD5
- python验证考拉兹猜想_Python考拉兹猜想输出序列代码实践
- 《东周列国志》第九十六回 蔺相如两屈秦王 马服君单解韩围
- 7天带你搞定一个图表框架echarts(七)
- Android远程真机调试(电脑使用 Vysor 控制手机)
- 非对称加密算法——RSA
- 3dsmax2020安装报1603错误的解决方法
- macOS下载【转载】
- 10.Python面向对象编程
- 带你开发一个完整的 node.js 项目
- Arduino成长日记6 - 中断机制
- Python10分钟入门教程,Python入门神图一张
热门文章
- linux换源 最最简单
- 回顾一些重要的CNN改进模型(你真的了解 Convolutional Neural Networks 么)
- 记录下两个孩子在MineCraft里面还原公寓的经历
- git reset --hard、git reset --sort及git revert区别
- 机器视觉:makefile编译调用Caffe框架的C++程序
- 深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)
- mysql的最佳索引攻略
- 亿级 Web 系统的容错性建设实践
- 聚类图像像素 Clustering Pixels Using K-Means
- C++ 3 基本数据类型