使用VS2019开发和调试Linux程序

2023-11-13

一、前言

目前,越来越多的项目有需求在Linux平台上编译运行,为了兼容windows程序员在熟悉的开发环境下实现linux的开发,vs2019中提供了对linux开发的原生支持。
VS2019支持两种开发方式,一种是传统的sln方式,一种工具链方式,工具链模式不支持autotools工具链,只支持CMake,这个对我们没有什么实质上的影响,现在很多跨平台开源项目都已经迁移到CMake上了,以下的例子是使用sln方式进行说明的,今后我们可以根据需求选择使用哪种方式来进行开发。

二、安装vs2019环境

1、到https://visualstudio.microsoft.com/zh-hans/
2、勾选"继续"
3、到vs2019的开发子模块选择,如下:
在这里插入图片描述
勾选对应的内容进行安装
4、准备一个支持ssh的linux真机或者虚拟机

三、步骤

1、创建项目

打开VS2019,执行步骤如下:
在这里插入图片描述
其他配置选择默认即可,生成的代码为:
在这里插入图片描述

2、配置工程属性

在这里插入图片描述
主要是配置远程计算机的ip地址、用户、登录密码等。到此其他的配置就和windows上的一模一样了。

3、编译工程

将需要的命令写入命令行(右键项目——属性——配置属性——调试——命令参数),执行编译

4、启动程序

编译正常后,即可设置断点,F5运行程序进行调试

四、CMAKE

使用sln需要将项目相关的文件都加入到sln中来,且win和linux需要两个不同的sln,显然这么做在工程很多的时候会变的很复杂和繁琐。因此可以使用一下CMAKE编译。

1、步骤

1)在创建新项目时,选择cmake项目
在这里插入图片描述
2)默认只有windows上的编译选项,双击增加linux的编译选项
在这里插入图片描述
3)远程计算机选中配置的linux机器,参考2、配置工程属性
4)点开高级选项,设置一下远程linux上cmake的位置和智能感知的工具集
在这里插入图片描述
5)编辑一下CMakelists.txt,限制使用std cpp 17,实例代码:
https://github.com/ttroy50/cmake-examples
在这里插入图片描述
6)在linux上和win上分别编译之后跑一下,正常即可

总结

1、用VS2019+标准库参照一定的规范开发windows版
2、新建linux工程(sln或者CMake),将代码加入工程,编译,理论上此时就能得到一个linux版的二进制了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用VS2019开发和调试Linux程序 的相关文章

  • 如何在 C++ 中急于提交分配的内存?

    总体情况 带宽 CPU 使用率和 GPU 使用率都极其密集的应用程序需要每秒从一个 GPU 向另一个 GPU 传输约 10 15GB 的数据 它使用 DX11 API 来访问 GPU 因此上传到 GPU 只能在每次上传都需要映射的缓冲区中进
  • python+win32:检测窗口拖动

    有没有办法检测何时使用 python pywin32 在窗口中拖动不属于我的应用程序的窗口 我想对其进行设置 以便当我拖动标题与桌面边缘附近的图案匹配的窗口时 当松开鼠标时它会捕捉到边缘 我可以编写代码 以便在释放鼠标时将所有具有该标题的窗
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 自定义波特率,redux

    我遇到的问题详述如下自定义波特率 https stackoverflow com questions 7714060 custom baud rate SetCommState 波特率 921600 失败 但波特率 115200 成功 尽管
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • SetCurrentDirectoryW 中的错误 206

    在我之后之前不清楚的问题 https stackoverflow com questions 44389617 long path name in setcurrentdirectoryw 我以某种方式能够创建一个具有长路径名的目录 但是
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include

随机推荐

  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】篮球比赛

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 篮球比赛 知识点广搜 时间限制 1s 空间限制 64MB 限定语言 不限 题目描述 篮球 5V5 比赛中 每个球员拥有一个战斗力 每个队伍的所有球员战斗力之和为该队伍的总体战斗力 现有
  • Makefile “multiple target patterns. Stop.”解决方案

    几天在帮一个同事编译Xen中的tools时 我改了一些config文件 然后就遇到了一个错误 Makefile 72 multiple target patterns Stop 花了大约半个小时才找到了这个错误是自己写错了一个配置的原因 将
  • 《reStructured Pre-training》笔记

    reStructured Pre training 笔记 本文主要记录论文中我觉得比较重要的部分 并加入个人的理解 如有错误请可直接指出 由于格式问题 强烈建议去notion观看 完整版内容请移步notion网页进行详细阅读 谢谢 Abst
  • 【探索Linux】—— 强大的命令行工具 P.5(yum工具、git 命令行提交代码)

    阅读导航 前言 一 软件包管理器 yum 1 yum的概念 yum的基本指令 使用例子 二 git 命令行提交代码 总结 温馨提示 前言 前面我们讲了C语言的基础知识 也了解了一些数据结构 并且讲了有关C 的一些知识 也学习了一些Linux
  • docker java -jar_Docker 部署java jar包

    1 创建一个Dockerfile文件 将Dockerfile文件和jar包放到同一个文件夹下 Dockerfile文件内容 基于java8来构建镜像 FROM java 8 参数设置 ENV PARAMS 设置时区 ENV TZ RPC R
  • 吃鸡账号显示连接不了服务器,《绝地求生》“与Steam服务器连接时出现了一个问题”怎么解决...

    导 读 用STEAM正版的玩家 无论是CSGO DOTA2 CSS的游戏玩家近期升级后会遇到steam错误 无法连接至steam网络这个问题 弄得很头疼 有的玩家说在线等升级其实不是这样 这样根本不能解决这个 用STEAM正版的玩家 无论是
  • 华为云云耀云服务器L实例评测|使用宝塔面板管理服务器教学

    目录 一 概述 1 1 华为云云耀云服务器L实例 1 2 BT 宝塔 1 3 资源和成本规划 二 购买云耀云服务器L实例并进行相关配置 2 1 购买云耀云服务器L实例 2 2 设置服务器密码 2 3 配置安全组 2 4 设置Nginx安全级
  • VJ2-Perfect Squares

    A Perfect Squares time limit per test 1 second memory limit per test 256 megabytes input standard input output standard
  • Qt设置窗口背景,但是不影响控件

    设置窗口背景 代码如下 mainWidget gt setStyleSheet border image url icon 123 但是当添加一些控件之后 会出现下面这种情况 解决方法 只给窗口设置样式 mainWidget gt setO
  • 【Docker】容器化应用程序的配置管理策略与实践

    一 引言 1 1 Docker的背景和优势 Docker是一种开源的容器化平台 简化应用程序的打包 交付和运行过程 基于Linux容器技术 通过提供一个轻量级 可移植和自包含的容器来实现应用程序的隔离和部署 在传统的应用程序开发和部署中 往
  • c语言输入20个数,从小到大建立一个单链表

    一 要求输入20个数 按照从小到大的顺序存入链表中 可以分四步 获取数据 进行排序 插入链表 打印链表 1 定义一个整型数组 用来存储获得的20个数 int a 20 int i for i 0 i lt 20 i scanf d a i
  • 081200计算机科学与技术专业,研究生计算机科学与技术专业排名

    研究生计算机科学与技术专业排名 作者 admin 点击 次 南京大学考研网 nandakaoyan com 南京大学排名 研究生计算机科学与技术专业排名 唯一权威的南京大学考研网站为大家提供 研究生计算机科学与技术专业排名 本站由南京大学研
  • 时间序列预测之区间预测方法(PIs:MVE&Delta&Bayesian&Bootstrap&LUBE)

    文章目录 前言 一 预测区间的评价指标 1 PICP PI coverage probability 2 PINAW PI normalized averaged width 3 CWC coverage width based crite
  • sql developer使用技巧,快捷键

    PL SQL Developer使用技巧 快捷键 1 类SQL PLUS窗口 File gt New gt Command Window 这个类似于oracle的客户端工具sql plus 但比它好用多了 2 设置关键字自动大写 Tools
  • python异常

    一 什么是异常 异常是一个事件 该事件会在程序执行过程中发生 会影响程序的正常运行 一般情况下 python无法正常处理一个异常 会导致程序中断 在出现异常时 为了不影响程序的正常运行 我们需要捕获异常 在python中异常是一个对象 表示
  • UE4 C++创建继承于UEditorSubsystem类时报错

    使用UEditorSubsystem需要在Build cs里加上EditorSubsystem模块的引用 因为这是编辑器模块 if Target bBuildEditor PublicDependencyModuleNames AddRan
  • 人工智能在电力系统中的应用前景怎么样

    人工智能在电力系统中的应用现状 随着人工智能技术的兴起 人工智能技术应用在电力系统的运行 控制 管理等领域 人工智能技术在电力系统中的应用不仅拓展了人工智能技术的应用范围 而且扩展了人工智能技术凭借自动化和智能化程度高等优势 提升了电力产业
  • cmake:cmake-buildsystem

    介绍 基于cmake的构建系统被组织为一组高级逻辑目标 每个目标对应于一个可执行文件或者库 或者是一个包含自定义命令的自定义目标 目标之间的依赖关系在buildsystem中表示 以确定生成顺序和响应更改的重新生成规则 二进制目标 可执行文
  • 为什么要软件测试?测试可追溯性会带来什么改变?

    我们为什么要软件测试 测试证明我们的应用程序运行正常 可追溯性 或能够将需求追踪到测试用例 构成了测试策略的基础 测试可追溯性是将测试链接到一组需求并验证应用程序是否按预期工作的能力 当你的产品规模扩大时 可追溯性很重要 当你的应用很小的时
  • 使用VS2019开发和调试Linux程序

    文章目录 一 前言 二 安装vs2019环境 三 步骤 1 创建项目 2 配置工程属性 3 编译工程 4 启动程序 四 CMAKE 1 步骤 总结 一 前言 目前 越来越多的项目有需求在Linux平台上编译运行 为了兼容windows程序员