Linux 下程序开发的正确姿势是什么?想尽量接近 Windows 下 Visual Studio 和 TortoiseGit 这类工具的体验
- 0次
- 2021-07-21 09:00:50
- idczone
如题,以前一直是在 Windows 平台上开发。
现在有项目需要在 Linux 下进行编译和调试,想了解下正确姿势是什么。
网上搜索看到的一些回答感觉比较偏执,如果在 Linux 中开发时,图形界面程序就是都是垃圾我也就认了,老老实实地去熟悉命令行操作。如果有更方便的、能提高效率的方式,还是很想知道的。
举几个具体操作的例子,可能更清楚些:
1. 在 Visual Studio 中编译之后的警告和错误信息会统一在问题面板中列出,双击就能定位到源码中的位置。
在 Linux 中,一般是怎么做的?直接在终端中看输出的错误信息吗?还是配置一下 VS Code 之类的工具来调用编译,并且把结果按格式显示
2. 在 Linux 中一般怎么调试?如果没用 IDE 的话,就只能直接命令行 gdb 吗?
用 IDE 的话,有什么用着方便可靠的吗?
3. Windows 下我用 TortoiseGit, Linux 下图形界面的 Git 客户端有没有好用的?
SmartGit 还没试,因为定价太高了。GitKraken 刚试过,作为一个订阅费每月 $5 的软件,操作居然会卡,也远到不了 TortoiseGit 的水平
Git 用图形界面有什么绝对优势呢?还要交钱去用?
有个 gitg,但不了解你对 GUI 的具体需求,不知道是不是满足……
我用 TortoiseGit 的话,有一些比较常用的操作举个例子:
1. 提交。提交对话框中,底下会列出有改动的文件,未在版本控制中的文件也可以看一眼选择是加入、忽略还是不管它。有修改的文件直接双击一下就能打开 diff 工具看看修改是不是都是正常应该有的,顺便对照 diff 来写提交的 comment, 边看边写。
2. 分支操作。查看日志窗口中,各个提交的显示比命令行中的清晰、直观。找到提交后,右键菜单中就能完成创建分支、创建分支并切换、重置到该版本和浏览版本库等操作。在浏览引用窗口中,看远端分支、对本地分支改个名啥的也都很方便。
3. 感觉列更多意义不大了,就是看着清晰,操作方便,一般除了提交时写 comment, 就点鼠标就行了。
我也想发类似贴来着。看 github 上大佬代码,很多都是 ubuntu 平台,一个 makefile + cmake 就直接开干。
也没找到对于图形项目工程信息,天知道大佬们是怎么调试的。
对于个人而言,VS 图形调试对于理解代码流程,实在太重要,太方便了。
命令行效率更高
Clion
我忍不住发这个帖主要是怕因为我认知的局限错过了什么美好的东西
就像调试单片机程序一样, 51 和 Cortex-M 核都能用 printf, 但 Cortex-M 上我肯定多数问题是用调试器来调。
jetbrain 全家桶带的 git 工具很好用,不需要额外下载了
如果只有 Git 诉求的话,可以使用 IDEA 社区版,开源,免费。本质是个写 Java 的 IDE,但是里面的 Git 插件过于好用,你说的那些 Git 功能都有。当 Git 发生冲突时,一键自动合并,再直接用鼠标选择要保留哪些冲突的代码,非常好用,C 语言虽然没有语法解析器,但是有高亮。应该可以用。有时候我用 VSCode 开发完前端,然后再打开 IDEA 去管理要提交的代码。
有开发诉求也可以使用 CLion,这个是专门写 C 语言的,和 IDEA 是基于一个平台开发的,但是收费。
感觉最适合 LZ 的方案会是 VSCode Remote……
vscode remote 比较合适。
vscode+clangd+lldb
简单轻量,兼容各种 build system 。
还有一个是 Deploy, run, and debug your Linux MSBuild project
https://docs.microsoft.com/en-us/cpp/linux/deploy-run-and-debug-your-linux-project?view=msvc-160&viewFallbackFrom=vs-2017
谢谢, JetBrains 和 VS Code Remote 的方案我都去试试
先查查 VS Code Remote 做 Linux C/C++ 开发能到什么程度
CLion 看定价如果好用的话个人能负担,劝别人用有点悬
JetBrains 全家桶很有名哈,但因为平时不写 Java, 只装过 IDEA 进行编译,没咋用过
wsl+vscode 吧,最近再用,做嵌入式开发很好。
个人是 clion 订阅用户,感觉 clion 比不上 visual studio,只能开发小的模块。
Qt Creator
你要的这功能随便哪个 IDE 都有啊
调试看语言,有很多 linux 的 IDE 都支持 debug 模式。
git 同样也有 IDE 插件支持,或者 smartgit gitg 之类的都可以。
linux 下的开发主要收益是 shell 对不同软件操作的集成成本极低,只要一个操作可以在 shell 里面写出来,就可以将其与其它操作组合起来写成一个批处理脚本做自动化。
比如提交时代码拉取最新分支并同步到本地,然后提交。
在 windows 下很多 IDE 的集成做得比 linux 好,但是大多是同一个软件内的集成,而 linux 的优势就是不同软件基本都暴露了命令行的操作支持,可以很方便的做跨软件的集成。
git 的话推荐 sublime merge,就是 sublime text 那家的。
开发工具其实随意的,如果比较介意 CLion 的价格,可以用 VSCode 开发代码。IDEA 社区版提交 Git 。
vscode+wsl 已经能满足你的需求了,git 的话,装下插件,也挺不错的,常用的操作都有
只写 Linux/C 的话我以前都是直接 vim 的,搞一下配置的话,再把 CTAGS 和 NERDTREE 之类的插件整一整,跟 IDE 也没差
VS 写什么语言
jb 全家桶很多都可以满足吧?
debug 我觉得 kdbg 比 vs 好用 watch 能自动展开宏 不会一长串看不到头的指针跳转 也会自动根据指针类型解引用
vim,eclipse,git 就命令行
有调试需求的话肯定 GUI 会方便很多。
有些 IDE 是跨平台的,比如 JetBrain 家的,能提供像 VS 那样顶尖的 IDE 体验。
如果愿意折腾的话,Vim 和 Emacs 都可以死命装插件堆功能的。另外 Linux 下也可以用 VSCode,只不过体验跟 VS 差得多了,不知道装插件能能靠近 VS 的体验。
还有一种方案就是在 Windows 用 IDE 来连虚拟机调试,比如 VMware 就给 VS 提供了插件,我没用过,你可以了解一下。
另外如果是非底层系统开发的话 WSL 也应该可以试一试。
可以试一下 WSL2
你把 linux 想象的太简陋了吧
也可能是我太习惯 Windows 了,但 Linux 的桌面环境感觉最近这 10 年变化都不大。
gnome, xfce 菜单栏项目在鼠标指针略过时都没变化,自带的文件管理器也一直很弱。
xfce 默认主题窗口的边框居然是 1px 宽度的,导致很难 resize, 查了下建议用按 Alt 键同时拖动鼠标右键的方法。
Debian 系和 Arch 系的几个主流系统都试了下,桌面环境可能就剩 KDE 还没试了
没有,不存在,Linux 的开发体验就是乐色,比不过 Windows 的
Linux 的桌面做得太烂了,写代码还是选 Windows 或者 mac 。
编辑器用 Emacs 或者 Vim,自定义命令、加插件之后用着也很顺手,编译用 CMake,调试用 GDB,版本管理直接 Git 命令。这些工具用熟了之后就对 GUI 没啥刚需了。
你问这个问题的时候应该意识到,v 站很多人是没有长期使用 Linux 作为主用开发环境的经验的,却在这儿扯用 Linux 开发多么不好用。
尝试过之后,我觉得正确姿势就是使用 vscode+remote ssh
前几年 vscode 不太好用那会儿,我还常用 KVM 虚拟机里跑 visual studio 写代码。
这两年 vscode 越来越好用,虚拟机只用来开微信了
一直做 Linux 环境软件开发,公司配的 Windows,基本上就是 vs code + remote ssh 插件连上 Linux 开发服务器,有时候直接 wsl 开发。
作为一个使用了 linux 做日常系统近十年的人,感觉最解决 lz 痛点的应该是 wsl (逃
git 那个,个人常用 git add -p 一点点加,习惯了感觉挺好
其实关于 Git 的 GUI 的工具蛮多的,主要还是看自己的使用场景和偏好选择,可以看下 lazygit,是一个 Terminal 内部渲染的 Git GUI,主要还是靠快捷键。
vscode git graph,体验与 jetbrains 自带的几乎一样,很好用
1 、2:用 IDE
3:在我用 Linux 当主力开发系统的两年多里,没有
除了终端好用,Linux 没有任何一点比得上 Windows (虽然这一点很重要就是了
i2ex 这个时候怎么没人提 mac 了……
我用 mac 的原因就是能提供优良的图形界面同时模拟足够接近的 Linux 环境——只需要起一个 docker 容器就好了
调试可以用 jetbrains+gdb remote,项目平台差异不大的话甚至编译 darwin 的版本来调试就够了,反正看的只是工程里的源码
我在学生时代用了很久的 Linux 桌面,最接近 windows 的体验应该是 qt 和 jetbrains ( clion ),qt 体验要好一点,native,快,clion 卡得我怀疑人生; qmake 项目管理足够简单,基本不用写几行脚本,clion 的 cmake 写到今天还是发愁,能复制粘贴就不重新写。而且 qt community 是免费的,很容易获得。
不过那个时候是没钱,又要 windows 打游戏又要 linux 下开发学习,所以一台破笔记本装双系统,现在解决方式简单粗暴,工作 mac 打游戏 win 台式机,如果需要便携 windows 拿公司的用,实在不行像我同学一样再买台 x1 carbon
经验:
- 工业级 c/++项目 vscode 根本就没用,跟精心调教过的 vim 差不了多少,很多大佬的 vim 是跟手调教了好几年的,对他们来说 vscode 就是玩具。对没有积累的用户来说 vscode 也就稍强一点,但折腾一星期它也脱离不了 __编辑器__
- 从零开始的话 qt 是最最容易的,安装包是 bundle,转换现成的工程也不用多写几行,而且免费,没什么门槛
- clion 功能强大到吊打一切 linux 桌面能用到的软件,diff 工具、git 可视化、编辑器、调试器、profiler…… 它里面随便哪个功能拿出来都能秒掉 Linux 桌面下干同一件事情的其它东西,是最接近 vs studio 的替代品,但即便如此它的体验也还是不如 win 版 clion 的体验,而且要迁移工程会非常繁琐,原来就是 cmake 的工程还好,当你要新写一堆管理上百个源码文件的 cmake 时……喔那可有点恐怖
感觉 V2 上用 Linux 的应该不少,在电子论坛发帖的话,除了搞嵌入式 Linux 的,日常工作基本都在 Windows 上完成
我的意思是长期主用 Linux 桌面的,应该不是那么多的。
现在动不动远程开发,跟 Linux 桌面本地开发体验差太远。
VS Code Remote, CLion, Qt Creator 我都试试,看回复 VS Code 还是可以期待一下
git 客户端我看看 VS Code + 扩展和 JetBrains IDE 内置功能用起来怎么样,sublime merge 看界面貌似还可以,但太贵了
WSL 也还没玩过,可以试试,目前还不清楚要开发的项目能不能用
windows 上安装 vscode + c/c++ 插件 + remote ssh 插件,linux 上安装 gcc/g++ + gdb + ssh-server 。远程开发就行了。如果代码量大了操作有点卡的话可以分 workspace 来搞。
我其实只要能完成工作就行,远程开发好用的话也不错,不一定非得直接用 Linux 桌面
个人最喜欢 clion
今天在阮一峰博客上看到一篇文章 可以参考下 https://zws.im/