使用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程序 的相关文章

  • 如何反汇编、修改然后重新组装 Linux 可执行文件?

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s
  • Visual C++ free 和 malloc 的线程安全性?

    有谁知道 free 和 malloc 在 Visual C 2010 上是否是线程安全的 我遇到了奇怪的问题 内存被损坏 我几乎认为这是唯一的可能性 有谁知道安全装置是否可以打开和关闭以及如何打开和关闭 前提是您链接的是线程安全库 http
  • shutdown.exe 参数带有破折号或斜杠?

    我使用的电话shutdown exe重新启动安装了不同版本 Windows 的计算机 对于 Windows XP 命令是 shutdown exe r f t 01 对于其他版本的 Windows 我使用 shutdown exe L R
  • 注册表碎片整理程序[重复]

    这个问题在这里已经有答案了 这是出于好奇 但我见过几个 其中一些非常流行 称为注册表碎片整理程序的软件 虽然我可以看到它们提供的好处 但我很好奇您到底是如何进行注册表碎片整理的 请注意 我并不是要求提供软件名称 只是询问其如何以编程方式完成
  • 通过 PsExec 在远程计算机中执行批处理文件

    我正在尝试通过 PSExec 在远程 PC 上运行批处理文件 在批处理文件中我刚刚编写了 记事本 下面的 psexec 命令在我的笔记本电脑上运行 但无法在远程 PC 上执行任何操作 我什至没有看到 记事本 在远程计算机的进程列表上运行 c
  • 如何在特定的Java版本上运行应用程序?

    如何运行具有特定 Java 版本的应用程序 我安装了三个 Java 版本 myuser mysystem sudo update alternatives config java There are 3 choices for the al
  • Ruby On Rails 与 Windows Vista - 最佳设置? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您认为 Win Vista 环境中 RoR 的最佳设置是什么 我尝试过 radrails eclipse 插件 它对我来说似乎太庞大了 我也开始
  • endl 不适用于 wstring (unicode)

    这是代码 std ofstream f file1 txt f lt lt 123 lt
  • 套接字发送调用被阻塞很长时间

    我每 10 秒在套接字上发送 2 个字节的应用程序数据 阻塞 但发送调用在下面的最后一个实例中被阻塞超过 40 秒 2012 06 13 12 02 46 653417 信息 发送前 2012 06 13 12 02 46 653457 信
  • Windows 相当于 Unix find 命令,用于搜索多种文件类型

    虽然在 Windows 中安装了 cygwin 可以提供大部分 unix 命令 但我仍然想知道如何使用 Windows find 命令在一个命令中搜索多个文件类型 ie find name cpp o name h o name java
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • 在 Windows 上使用 pycrypto 时如何修复“ImportError:无法从 Crypto.Cipher 导入名称 _AES”?

    我在 Crypto 的 Cipher 模块中有 AES Python27 Lib Crypto Cipher AES 当我尝试做的时候 from Crypto Cipher import AES 我收到以下错误 Traceback most
  • aarch64 Linux 硬浮点或软浮点

    linux系统有arm64 有arm架构armv8 a 如何知道 Debian 运行的是硬浮动还是软浮动 符合 AAPCS64 GNU GCC for armv8仅提供硬浮动aarch64工具链 这与 armv7 a 的 GCC 不同 后者
  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 无法在 cmd 中通过管道传递 cmdlet 对象

    我正在使用这个 powershell 命令来获取特定的用户配置文件 获取 WmiObject Class Win32 UserProfile Where Object LocalPath eq C Users Pela 但是当我通过调用 p
  • 隐式声明“gets”

    据我所知 隐式声明 通常意味着该函数必须在调用之前放置在程序的顶部 或者我需要声明原型 然而 gets应该在stdio h文件 我已包含 有没有什么办法解决这一问题 include
  • 如何使用批处理文件创建 EXE 可执行文件? [复制]

    这个问题在这里已经有答案了 我希望能够简单地运行 Windows 批处理文件并让它创建 exe 可执行文件 我知道您可以使用以下脚本批量创建文件 echo off echo This will be in a text file gt gt

随机推荐

  • 【满分】【华为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程序员