VisualStudio(vs)开发linux程序配置

6 篇文章 0 订阅
2 篇文章 0 订阅

VisualStudio(vs)开发linux程序配置

  • 在开始之前,强烈建议阅读官方文档,或许问题就已经解决了
  • 官方文档:https://docs.microsoft.com/zh-cn/cpp/linux/download-install-and-setup-the-linux-development-workload?view=vs-2017

远程linux环境

  • 为了能远程上linux并调试,需要在linux上安装如下工具:gcc、gdb、rsync、zip、make、openssh-server、cmake
  • 在ubuntu上则按如下命令安装
sudo apt-get install openssh-server g++ gdb make rsync zip
sudo service ssh start

在这里插入图片描述

头文件智能提示

  • 默认情况下虽然可以远程编译通过,但在vs2017上并没有智能提示,多了好多波浪线,看着就很不舒服(据说在linux上安装了zip工具后vs就会自动将头文件压缩复制到windows本地然后提供智能提示,反正我是没享受到,因此只能手动拷贝了)
  • 为了解决这个头文件的问题,需要将目标主机即linux上的头文件拷贝到本地,做法如下
  • 首先将远程linux上的/usr/include里的所有文件拷贝到windows本地
  • 之后在vc++目录里的包含目录配置下拷贝过来的文件的目录
    在这里插入图片描述
  • 这样波浪线就消失了,而且可以跳转到定义了

工程配置

  • 首先要修改下远程根目录,如下图
  • 注意,默认是~/projects,表示在用户目录的projects下,但是这个~会导致奇怪的问题,因此我们最好为其指定一个明确的路径,如我这里就放在/root/projects下了
  • 在这里插入图片描述

第三方静动态库和头文件的使用

  • 第三方库的使用涉及到文件的复制问题,建议先看下官方文档关于复制源的说明,地址如下
    • https://docs.microsoft.com/zh-cn/cpp/linux/prop-pages/copy-sources-project?view=vs-2017

路径配置

  • 假如工程引用了第三方的静动态库(自然包含头文件了),那么怎么办呢
  • 项目中的源文件vs会帮我们自动拷贝到linux上(路径就是$(RemoteRootDir)/$(ProjectName)),因此我们得手动将库和头文件拷到linux存放源文件的地方,在本例中
  • $(RemoteRootDir)=/root/projects;
  • $(ProjectName)=ffmpeg_decode;
  • 静动态库和头文件分别放在lib和include文件夹里,示例如下
-/
  -root
    -projects
      -ffmpeg_decode
		-xxx.cpp
		-lib
		  -xxx.a
		-include
		  -xxx.h
  • 然后配置包含目录,如下图,第一个路径主要是给linux上用的,这个路径要根据实际设置(即linux上的路径),第二个路径则是给vs上用的(即windows本地的路径)
  • 在这里插入图片描述
  • 头文件配完了,接下来需要配置第三方库
  • 打开链接器,在常规下配置linux上库的路径,在输入上配置库的名称,如下图
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 以上因为主要是在linux上编译,因此常规库里的附加库目录只是配置了在linux上的路径,在本示例中是$(RemoteRootDir)/$(ProjectName)/lib
  • 输入则是配置库的名称,本示例中由于引用的是ffmpeg的库libavcodec.a,libavformat.a等库,故配上avcode,avformat等(前缀和后缀不用写)

文件复制

  • 路径都配置好了之后,接下来就是文件的拷贝了,即将第三方库和头文件拷贝到我们之前的路径配置,使之相对应
  • 你可以直接将文件手动复制到linux上对应位置,但这样有个问题,就是vs上工程在清理后远程所有文件都消失了,又必须得重新手动拷贝,这样太麻烦了,因此必须寻求自动复制的方案,如下
  • 如果文件比较少,那么可以直接在配置属性的复制源里添加即可,如图
  • 在这里插入图片描述
  • 这样在运行时就会将windows本地的文件复制到linux上指定目录了,本例展示了静态库.a的复制,其他文件也是如此
  • 但是有可能文件太多了,一个一个这样写也太麻烦了,幸运的是官方对此有一定解决方案,如下图
    在这里插入图片描述
  • 于是打开项目的vcxproj文件,将要复制的东西添加如下
<?xml version="1.0" encoding="utf-8"?>
<Project>
	...
  <ItemGroup>
   <MyLibItems Include="lib/**" />
   <DataFilesToCopyRemotely Include="@(MyLibItems)" />
  </ItemGroup>
  <ItemGroup>
   <MyIncludeItems Include="include/**" />
   <DataFilesToCopyRemotely Include="@(MyIncludeItems)" />
  </ItemGroup>
</Project>
  • 保存后再试试吧,文件在远程时本地的就会被复制过去了

其他

  • 当程序有日志输出时,我们只能在linux控制台才能看到,如下
  • 在这里插入图片描述

ffmpeg开发

  • 可能会报pthread相关的错误,因此需要我们将pthread链接过去(-lpthread,其中l是L的小写,并不是i的大写I,真是讨厌,这两个看起来是一模一样的),如下
    在这里插入图片描述
  • 可能会报ffmpeg库里的很多函数未定义,这个主要是由于库的依赖导致的,将被依赖的放在依赖的前面即可,如avformat依赖了avcodec,因此要放在avcodec的前面,如图
  • 在这里插入图片描述

参考

Visual Studio 2017:Linux C++ 开发教程(WSL篇)_运维_猫科龙-CSDN博客\nhttps://blog.csdn.net/maokelong95/article/details/64523303/

使用Visual Studio 2017开发Linux程序 - dchao - 博客园
https://www.cnblogs.com/dongc/p/6599461.html

vs2017 编译C++ 生成linux下可运行的.out文件_运维_QuanWaiRen0的博客-CSDN博客
https://blog.csdn.net/QuanWaiRen0/article/details/80697154

Linux下undefined reference to ‘pthread_create’问题解决_运维_jiangxinyu的专栏-CSDN博客\nhttps://blog.csdn.net/jiangxinyu/article/details/7778864

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Visual Studio作为集成开发环境(IDE)开发Linux程序时,我们可以通过使用可用的工具和插件来实现这个目标。 首先,我们可以通过在Visual Studio中安装适用于Linux开发的插件来支持相关操作。其中一个常见的插件是Visual Studio Tools for Linux,该插件提供了对Linux操作系统和开发工具的支持,包括交叉编译、远程构建和调试等功能。通过使用这个插件,我们可以在Visual Studio中轻松配置和管理Linux开发环境。 其次,我们可以使用适用于Linux的C/C++项目模板来创建我们的项目。在Visual Studio中选择这些模板后,我们可以设置项目属性,例如选择目标Linux平台、设置交叉编译工具链等。这使得我们可以方便地在Windows中开发Linux应用程序,并在需要时将其部署到Linux环境中。 另外,Visual Studio还提供了强大的调试功能,包括对Linux调试的支持。通过配置调试选项和设置调试器连接到远程Linux机器,我们可以使用Visual Studio的调试器在Linux上单步调试我们的应用程序,以便快速解决bug和问题。 此外,Visual Studio还提供了对版本控制系统(如Git)的集成,使我们能够轻松地与团队合作和管理代码。 总结来说,通过在Visual Studio中安装适用于Linux开发的插件、使用项目模板和配置调试器,我们可以在使用Visual Studio作为集成开发环境开发Linux程序时,享受到便捷和高效的开发体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值