想请教一下各位大佬,你们的 C/C++ Linux 开发环境是什么样的?

2023-06-27 09:21:56 +08:00
 sbldehanhan

用的操作系统是啥?用 IDE 吗? 本地编译还是服务器上编译?服务器上编译用什么工具连接?

8909 次点击
所在节点    C++
84 条回复
bruce0
2023-06-27 10:48:59 +08:00
win10 + VM + debian12 + clion + GCC/clang
yolee599
2023-06-27 10:54:49 +08:00
@sbldehanhan #7 对,ssh 上去,公司服务器配置比较高,编译大工程比较快
sanjay2023
2023-06-27 11:01:25 +08:00
centos + nvim coc + cmake, 本地 mac iterm 连 centos
Hengtang
2023-06-27 11:05:51 +08:00
所有流程基本都在 VSCode 里完成。
1 、开发环境:嵌入式 linux 设计到各种芯片的 SDK ,对操作系统版本也有要求,所以每种芯片搭建一个 Docker 开发环境,根据 SDK 要求使用不同版本的 Linux 镜像作为底层容器,SDK 和自己的工程路径放到宿主机上并挂载进开发容器。宿主机为一台 Ubuntu Server 的开发用服务器。
2 、本地开发环境:操作系统 Deepin 20.9 ,选 linux 作开发机是因为会大量使用 Docker 和 shell 工具,在 linux 下体验会好很多。选 Deepin 的原因是微信和 QQ 之类软件目前还是必须要用,用 Deepin 会少很多问题,装个 Wine 运行器的话很多 Windows 小工具也能双击直接运行。
3 、编辑、编译、部署工具:VSCode 。VSC 可以远程连接开发用服务器上的 Docker 开发环境,局域网环境下体验跟本地开发基本一致。编译、部署等在开发阶段直接通过自己编写的 VSCode 的 task.json 脚本化运行,在 VSCode 内直接快捷键调用。
4 、远程调试:VSCode 。VSCode 的 task.json 里可以添加通过 SSH 远程运行 shell 指令来启动远程目标设备上的 GDB Server ,在 launch.json 中定义好远程目标设备的 IP 和 GDB server 端口等信息后就能直接在 VSC 中 F5 进行远程调试。
5 、CI/CD:Drone + Gitea 。VSCode 有 Drone 插件可以一键构建部署等。
jackmod
2023-06-27 11:08:53 +08:00
个人项目在 devcontainer 里起步,github 代为 CI
用了 docker 之后系统就尽量不装开发环境了
Yuan2One
2023-06-27 11:09:55 +08:00
Windows clion+linux 服务器
直接在 clion 里配置好远程服务器,然后就可以同步代码,构建,debug 等操作了,也可以在服务器上启 docker 然后操作
很舒服的点在于 linux 服务器不需要配置什么东西,然后 clion 相当于一个代码的图形界面
L4Linux
2023-06-27 11:11:20 +08:00
Emacs + Eglot + Clangd
Jirajine
2023-06-27 11:11:32 +08:00
Archlinux + vscodium + clangd +lldb
一般本地调试为主,也可以通过 ssh 远程调试。
yidadaa
2023-06-27 11:12:20 +08:00
大型项目(本地 MacBook 要编译 20 分钟以上的项目都算,无论什么原因导致的)只能在开发机专用服务器上开发,几百个核拉满,只在本地开发基本干不了活,索引都建不起来。

CLion 基本对于这种项目无能为力,JB 的远程开发体验就是一坨,团队内使用统一的 VSCode 配置,使用 VSCode Remote 开发,我自己用 NeoVim + coc 插件开发。
loken2020
2023-06-27 11:26:24 +08:00
做 C/C++ 开发,最好可以熟悉各种编译开发环境,例如 msys2 ,vs2019 ,clion 等等。
mingl0280
2023-06-27 11:34:59 +08:00
Win10+Visual Studio/VSCode+CMake+WSL1+远程物理机
我们那代码要“看熟了还记得住位置”得啥都不干光背几年的,调试不上 VS 或者 VSC 在 linux 上简直是灾难——虽然我自己用 gdb 用得飞起但是这种能力没法推广给全组啊
exch4nge
2023-06-27 11:46:23 +08:00
本机 mac ,用 vscode remote ssh 连上 centos 7 开发机,编译用 gcc / clang ,构建用类似 bazel 的,分布式编译,有缓存。vscode 上主要用 clangd 插件。
weeei
2023-06-27 12:39:55 +08:00
搭车问一下,在 Linux 上选 clang 而不是 gcc 做开发的话,会有什么坑吗?
yangxin0
2023-06-27 12:40:33 +08:00
公司:Mac + Ubuntu 服务器
家里:PC + WSL2
weeei
2023-06-27 12:40:57 +08:00
主要是看上 clang 可以使用 block 这个语言扩展。
foxtalk
2023-06-27 12:49:25 +08:00
开发机:linux mint
代码编辑:mac ,vscode ssh 连接到 linux mint 编辑代码,编译都是在 linux mint 上
zhuangzijun1996
2023-06-27 12:53:03 +08:00
vscode devcontainer 要啥交叉编译工具就下啥 一个 Makefile 全搞定 做 ci/cd 也方便
mybyons
2023-06-27 13:17:37 +08:00
其实这个问题可以借鉴大厂的开发环境配置(Google, FB...)

Google C++ 团队用 bazel 统一管理, 各位提到的痛点基本都能解决,(大型项目用 bazel cache 加速...)...

个人项目也在转向了 bazel, 编译器版本管理,打包,发布 都非常的优雅

缺点就是需要自己花费几天的时间熟悉 bazel 个人还是非常推荐
sbldehanhan
2023-06-27 14:02:05 +08:00
@yolee599 那怎么调试呢?用 gdb ?
cnbatch
2023-06-27 14:05:51 +08:00
我不是大佬,所以不做纯 Linux 编程,只能做点跨平台小应用顺便兼容 Linux 的程序。
(尤其是公司内只做 Windows 开发,完全不符合 OP 提问,因此就不谈了)

于是我日常 Windows + Visual Studio + git 管理代码,Visual Studio 写好了测试完了再去 posix 系统做编译+测试。
顺序是:
Windows → FreeBSD → Linux
通常在 FreeBSD 测试完了,Linux 基本上都能过,偶然有些小问题的时候再针对性地改。

Windows + Visual Studio 时,自然是 sln 文件管理一切。然后是 CMakeLists.txt ,在 POSIX 系统编译时会用到。
因此在 POSIX 平台是用 cmake + git + 代码编辑器(如 VSCode )。

为什么先测 FreeBSD 再去 Linux ?
1 、我本身就用着 FreeBSD 及其衍生系统,那肯定要照顾到
2 、FreeBSD 同样也是 POSIX 系统
3 、BSD 全系列自带编译器和调试器工具链,不需要单独安装
4 、Linux 发行版过多,glibc 的版本号也是,我怕某个发行版测试完成后,换成另一个 Linux 发行版又出问题,然后还不知道到底是我的问题、还是第三方库的问题、或是 glibc 的问题、甚至是不是发行版的问题

至于非 Windows 平台的 debug ,我个人是手动使用 LLDB ,尽管不怎么熟练。GDB 用得比较少,因为大多数 POSIX 环境 bug 都在 FreeBSD 测试时解决完了。

真要在 Linux 测试的话,通常以 Debian 虚拟机为先。当然了,其它系统比如 Fedora, Alpine 在有必要的时候也会测一测。

而且我发现跨平台应用的终极 debug 方式,是输出一堆 Log ,然后再从故障位置根据 Log 内容往回排查。
其次是挂着调试器让它运行到故障位置,这个普通常规调试方式,大家都用过,经验比我还丰富。

没办法,因为我不是大佬。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951941

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX