我想将我的编程视野扩展到Linux.一个好的,可靠的基本工具集很重要,什么比IDE更基本?
我可以找到这些SO主题:
我不是在寻找轻量级的 IDE.如果IDE值得花钱,那么我会付钱,所以它不需要是免费的.
那么我的问题是:
什么好的,C++编程IDE可用于Linux?
最小值是相当标准的:语法突出显示,代码完成(如intellisense或其Eclipse对应)和集成调试(例如,基本断点).
我自己也在搜索它,但有很多东西几乎不可能手工分离好东西,特别是像我这样在Linux上几乎没有C++编码经验的人.我知道Eclipse支持C++,我真的很喜欢Java for IDE,但它对C++有什么好处,还有更好的东西吗?
第二篇文章实际上有一些很好的建议,但我缺少的是究竟是什么让这个吸收的IDE对用户如此好,它的(dis)优势是什么?
也许我的问题应该是:
您提出了什么IDE(根据您的经验),为什么?
Kon*_*lph 261
在最初编写这个答案时,我最近从Visual Studio(具有多年经验)转换到Linux,我做的第一件事就是尝试找到合理的IDE.当时这是不可能的:没有好的IDE存在.
然后我意识到Linux中的IDE是带有工具的命令行:
根据您的需要,您必须安装和配置几个插件,以使编辑器工作得很好(这是一个烦人的部分).例如,Vim上的大多数程序员都将从YouCompleteMe插件中受益,以实现智能自动完成.
完成后,shell是您与各种工具交互的命令界面 - 调试器(gdb),Profilers(gprof,valgrind)等.使用Make,CMake,SnakeMake或任何各种工具设置项目/构建环境备择方案.您使用版本控制系统管理代码(大多数人使用Git).您还可以使用tmux(以前也是屏幕)来复用(=考虑多个窗口/选项卡/面板)并保持终端会话.
关键是,由于shell和一些工具编写约定,这些都相互集成.这样,Linux shell就是一个真正的集成开发环境,与其他现代IDE完全相同.(这并不意味着单个IDE没有命令行可能缺少的功能,但反过来也是如此.)
一旦你养成习惯,我不能夸大上述工作流程的功能.但是有些人更喜欢图形编辑器,而且自从这个答案最初编写以来的几年里,Linux已经为几种不同的编程语言获得了一套优秀的图形IDE(但据我所知,对于C++来说并非如此).即使 - 像我一样 - 你最终没有使用它们,请试一试.这里只是一个小而有偏见的选择:
请记住,此列表远未完成.
1我从dsm的评论中偷走了那个头衔.
2我以前在这里提到Vim.虽然普通的Vim仍然有能力,但Neovim是一个很有希望的重启,并且现代化了几个老疣.
小智 86
我个人最喜欢的是CodeLite 2.x IDE.
使用CodeLite的决定是基于以下针对Linux的C++ IDE的研究:
毕竟我已经决定使用CodeLite 2.x的.
下面我列出了有关上述C++ IDE的一些优点和缺点.请注意,这仅反映了我个人的意见!
编辑:可惜SOF不支持表格,所以我必须写段落......
带有CDT插件的Eclipse Galileo
优点:
缺点:
NetBeans 6.7(注意这也是SunStudio IDE的基础)
优点:
缺点:
KDevelop4(注意:我没有太多测试)
优点:
缺点:
CodeBlocks 8.02(注意:我没有太多测试)
优点:
缺点:
CodeLite 2.x(注意:这是我个人的最爱)
优点:
缺点:
Imr*_*ran 75
很快你会发现IDE还不够,你还是要学习GCC工具链(这并不难,至少要学习基本功能).但IMO还不能减少IDE的过渡性痛苦.
ram*_*yac 66
快速回答,只是为此主题添加更多知识:
您必须查看NetBeans.Netbeans 6.7具有以下功能:
我认为它是一个完美的(并且更好)Visual Studio替代品,是学习C/C++的一个非常好的工具.
祝好运!
Kon*_*lph 32
你能不能再澄清它对你的影响,你必须改变什么.也许您可以通过提供一些指向您所使用信息的链接来指出我正确的方向.
我的第一个来源实际上是工具的man页面.只需输入
$ man toolname
Run Code Online (Sandbox Code Playgroud)
在命令行上($这是提示的一部分,而不是输入).
根据平台的不同,它们写得非常好,也可以在互联网上找到.在这种情况下make,我实际上阅读了几个小时的完整文档.实际上,在大多数情况下,我认为这不是必要或有用的,但我在Linux下的第一个作业中有一些特殊要求需要复杂的makefile.在写完makefile之后,我把它交给了一位经验丰富的同事,他做了一些小的调整和修改.在那之后,我几乎知道make.
我使用GVIM是因为我有一些(但不是很多)以前的经验,我根本不能说任何关于Emacs或替代品的东西.我发现阅读其他人的.gvimrc配置文件确实很有帮助.很多人把它放在网上.这是我的.
不要试图一次掌握所有binutils,功能太多了.但是要获得一般概述,以便在将来需要某些东西时知道在哪里搜索.但是,您应该知道g++和ld(除非明确禁止时自动调用的GCC链接器工具)的所有重要参数.
另外我很好奇,你编码时是否有代码完成和语法高亮?
语法高亮:是的,比Visual Studio好得多.代码完成:是- ISH.首先,我必须承认,即使在Visual Studio中我也没有使用C++代码完成,因为(与VB和C#相比)它还不够好.我现在不经常使用它,但是,GVIM 具有对C++的本机代码完成支持.结合ctags库和类似taglist的插件,这几乎就是一个IDE.
实际上,让我开始的是Armin Ronacher 的一篇文章.在阅读文本之前,请查看最后的截图!
在获得(语法)错误之前,你必须先编译吗?
是.但这对于Visual Studio来说是一样的,不是吗(我从未使用过Whole Tomato)?当然,语法高亮显示将显示不匹配的括号,但这是关于所有.
以及如何调试(再次考虑断点等)?
我用的gdb是命令行工具.还有一个名为的图形前端DDD.gdb是一个现代化的调试工具,可以完成您在IDE中可以执行的所有操作.唯一让我烦恼的是读取堆栈跟踪,因为行没有缩进或格式化,所以当你使用大量模板时我很难扫描信息(我这样做).但那些也会混乱IDE中的堆栈跟踪.
就像我说的那样,我很高兴能够在高中时使用Windows记事本和命令行java编译器在Java编程语言中设置我的第一步,这真是一场噩梦!当然,当我可以将它与我当时拥有体面IDE的其他编程课程进行比较时
您甚至不应该尝试将现代的全功能编辑器(如Emacs或GVIM)与记事本进行比较.记事本是一个装饰TextBox控件,这真的有所不同.此外,在Linux和Windows上使用命令行是一种非常不同的体验.Windows cmd.exe严重瘫痪.PowerShell要好得多.
/编辑:我应该明确提到GVIM有标签式编辑(如标签式浏览,而不是标签 - 空格)!我花了很长时间才找到它们,尽管它们根本没有隐藏.打开文件或创建新文件时,只需键入:tabe而不是普通:e文件,GVIM将创建一个新选项卡.可以使用光标或几个不同的快捷方式(取决于平台)在标签之间切换.键gt(类型g,然后t在命令模式下)应该可以在任何地方使用,并跳转到下一个选项卡或选项卡号.ñ如果被赋予了许多.输入:help gt以获得更多帮助.
Kri*_*son 23
作为一个老式的UNIX人,我总是使用Emacs.但这有一个相当陡峭和漫长的学习曲线,所以我不确定我是否可以推荐给新手.
Linux确实没有"好"的IDE.Eclipse对C/C++不是很好(CDT正在改进,但还不是很有用).其他人都缺少您要寻找的所有功能.
了解所有单个工具(gcc,make,gdb等)的工作原理非常重要.执行此操作后,您可能会发现Visual Studio的处理方式非常有限.
Ste*_*e M 18
Checkout Netbeans,它是用Java编写的,因此无论您的操作系统如何,您都将拥有相同的环境,并且它支持的不仅仅是C++.
我不会试图说服你,因为我认为IDE可以是一个非常个人化的选择.对我而言,它通过快速提高我的工作效率,支持我编写的语言,并具有您期望从IDE中获得的标准功能.
sve*_*ven 18
只需快速跟进这个问题......
自从我开始使用Vim作为我在Linux中编程C++的主要"GUI"工具以来已经过去了一个月.起初学习曲线确实有点陡峭,但过了一段时间,打开正确的选项并运行脚本我真的掌握了它!
我喜欢你如何塑造Vim来满足你的需求; 只需添加/更改键映射,Vim就会变成一个高效的"IDE".
在Linux上构建和编译C++程序的工具链也非常直观.make和g ++是你将要使用的工具.
然而,调试器ddd并不是那么好,但可能是因为我没有时间正确掌握它.
对于那些曾经或正在寻找Linux中的C++ IDE的人来说,就像我一样,你最好的选择是使用Linux本身的标准可用工具(Vim,g ++,ddd),你至少应该尝试使用他们,在寻找其他的声音之前......
最后但并非最不重要的,我真的要感谢konrad在这里的回答,这真的帮助我在Linux开发环境中找到了自己的方式,谢谢!
我也没有关闭这个问题,所以人们仍然可以做出反应,甚至可能在已经非常好的答案中添加新的建议或补充......
小智 12
更短的答案是:选择你喜欢的任何"编辑器",然后使用GDB控制台或简单的GDB前端来调试你的应用程序.调试器带有花哨的IDE,比如Netbeans很糟糕的C/C++.我使用Netbeans作为我的编辑器,使用Insight和GDB控制台作为我的调试器.
凭借洞察力,您拥有良好的GUI和GDB的原始功能.
一旦你习惯了GDB命令,你就会开始喜欢它,因为你可以做一些你永远无法使用GUI做的事情.如果您使用的是GDB 7或更新版本,甚至可以使用Python作为脚本语言.
这里的大多数人都更关注IDE的"编辑".但是,如果您正在使用C/C++开发大型项目,则可以轻松地将70%以上的时间花在"调试器"上.花哨的IDE的调试器至少落后于Visual Studio 10年.例如,Netbenas与Visual Studio的接口非常相似.但与Visual Studio相比,它的调试器有许多缺点.
列表可能会更长.
我对Netbeans或其他类似IDE的缺点感到非常沮丧,因此我开始学习GDB本身.我发现GDB本身非常强大.GDB没有上面提到的所有"缺点".实际上,GDB非常强大,它在很多方面甚至比Visual Studio更好.在这里,我只向您展示一个非常简单的例子.
例如,你有一个像这样的数组:
struct IdAndValue
{
int ID;
int value;
};
IdAndValue IdAndValues[1000];
Run Code Online (Sandbox Code Playgroud)
当您的应用程序停止时,您想要检查IdAndValues中的数据.例如,如果要在数组中查找特定"ID"的序数和值,可以创建如下的脚本:
define PrintVal
set $i=0
printf "ID = %d\n", $arg0
while $i<1000
if IdAndValues[$i].ID == $arg0
printf "ordinal = %d, value = %d\n", $i, IdAndValues[$i].vaue
set $i++
end
end
end
Run Code Online (Sandbox Code Playgroud)
您可以在当前上下文中使用应用程序中的所有变量,您自己的变量(在我们的示例中,它是$ i),传递的参数(在我们的示例中,它是$ arg0)和所有GDB命令(内置或用户定义) ).
使用GDB提示中的PrintVal 1打印ID"1"的值
顺便说一下,NetBeans确实附带了GDB控制台,但是通过使用控制台,你可能会崩溃Netbeans.我相信这就是NetBeans默认隐藏控制台的原因
jas*_*cao 10
如果您喜欢Eclipse for Java,我建议使用Eclipse CDT.尽管C/C++支持不如Java那么强大,但它仍然提供了大部分功能.它有一个很好的功能,名为Managed Project,如果你没有Makefile的经验,可以更轻松地使用C/C++项目.但你仍然可以使用Makefiles.我做C和Java编码,我对CDT非常满意.我正在开发用于C语言的嵌入式设备的固件和用于与该设备通信的Java应用程序,并且非常适合为两者使用相同的环境.我想这可能会让我更有成效.
小智 9
我喜欢人们完全错过IDE原始问题中的请求.Linux不是IDE.这不是那些词的意思.我使用vi和gcc和make学习了c和c ++,我并不是说它们不是适当的工具,但它们不是IDE.即使您使用更复杂的工具(如vim或emacs)或任何您想要的精美编辑器,在命令行上键入命令也不是IDE.
另外,你们都知道make作为visual studio的一部分存在吗?如果你可以使用IDE来加速某些事情,那么IDE是"限制"的想法是愚蠢的,但仍然能够在需要时依赖命令行.
所有这一切,我建议,正如以上几个,尝试代码块.它有很好的代码突出显示,一个非常轻松的方式来创建一个项目,编码,运行它等,这是一个真正的IDE的核心,似乎相当稳定.调试糟透了......我从来没有在任何linux/unix变体中看到过一个像样的交互式调试器.gdb不是吗.如果您习惯于视觉工作室风格的调试,那么你几乎没有运气.
无论如何,我会去装我的东西,我知道只有一个观点的Linux人群会大声喊叫,让我立刻离开城镇.
我非常喜欢Ultimate ++的IDE.它有一些功能,旨在与自己的库一起使用(如果您不想在GTK +或QT上购买,BTW,这是一个非常好的工具包),但它与一般的C++项目完美配合.它提供了良好的代码完成,良好的语法着色,集成调试以及大多数现代IDE支持的所有其他功能.
在Linux上有很多IDE:
根据我的经验,最有价值的是Eclipse和Qt Creator.两者都提供所有"标准"功能(即自动完成,语法突出显示,调试器,git集成).值得注意的是,Eclipse还提供了重构功能,而Qt Creator提供了与Valgrind的集成以及对远程目标上的部署的支持.
商用CLion IDE看起来也不错(但我没有广泛使用它).
Sun Studio版本12是免费下载(免费和付费支持) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0.
我确信你有代码完成和调试支持,包括这个IDE中的插件支持.
Sun Studio适用于Linux和Solaris.论坛:http://developers.sun.com/sunstudio/community/forums/index.jsp.Sun Studio Linux论坛:http://forum.sun.com/forum.jspa?forumID = 855
我很想听听您对此工具的反馈.
BR,
~A
然后我注意到这根本不是你在那里工作的方式*,我把所有东西都扔了出去,花了几天阅读手册,设置我的shell(bash),建立一个GVIM环境,学习了GCC/binutils工具链, make和gdb从此过上幸福的生活.
我大多同意,但问题也是一种看法:我们忘记了在任何选择的IDE(或其他环境)中提高效率的难度.我发现IDE(Visual Studio,NetBeans,Eclipse)在很多方面都非常麻烦.
作为一个老式的UNIX人,我总是使用Emacs.但这有一个相当陡峭和漫长的学习曲线,所以我不确定我是否可以推荐给新手.
我是第二个; 在Linux和MSW(XP2,W2K)上使用Emacs作为我的主编辑器.我不同意它有一个陡峭的学习曲线,但可以说,因为它具有大量的功能,它有很长的学习曲线.您可以在短时间内保持高效,但如果您愿意,您可以在未来几年内学习它的新功能.
但是 - 不要期望Emacs的所有功能都可以在下拉菜单中使用,因为在那里找到它的功能太多了.
正如我所提到的,我已经在MSW上使用了GNU Emacs多年.在我"升级"到2008年之前,它始终与Visual Studio配合良好; 现在它有时会在从磁盘刷新文件之前延迟很多秒.VS窗口中编辑的主要原因是"Intellisense"代码完成功能.
| 归档时间: |
|
| 查看次数: |
970948 次 |
| 最近记录: |