C ++ IDE cho Linux? [đóng cửa]


209

Tôi muốn mở rộng tầm nhìn lập trình của mình sang Linux. Một bộ công cụ cơ bản tốt, đáng tin cậy là quan trọng, và cái gì cơ bản hơn IDE?

Tôi có thể tìm thấy những chủ đề SO này:

Tôi không tìm kiếm một IDE nhẹ . Nếu một IDE đáng đồng tiền, thì tôi sẽ trả tiền cho nó, vì vậy nó không cần phải miễn phí.

Câu hỏi của tôi, sau đó:

Điều gì tốt, IDE lập trình C ++ có sẵn cho Linux?

Các mức tối thiểu khá chuẩn: tô sáng cú pháp, hoàn thành mã (như intellisense hoặc đối tác Eclipse của nó) và gỡ lỗi tích hợp (ví dụ: các điểm dừng cơ bản).

Tôi đã tự mình tìm kiếm nó, nhưng có rất nhiều thứ gần như không thể tách biệt cái tốt khỏi cái xấu bằng tay, đặc biệt là với những người như tôi có ít kinh nghiệm mã hóa C ++ trong Linux. Tôi biết rằng Eclipse hỗ trợ C ++ và tôi thực sự thích IDE đó cho Java, nhưng nó có tốt cho C ++ không và có điều gì tốt hơn không?

Bài đăng thứ hai thực sự có một số gợi ý hay, nhưng điều tôi còn thiếu là chính xác điều gì làm cho IDE có đường rất tốt cho người dùng, lợi thế của nó là gì?

Có lẽ câu hỏi của tôi nên là:

IDE nào bạn đề xuất (đưa ra kinh nghiệm của bạn), và tại sao?


1
Đây là, tôi nghĩ, câu hỏi "Tôi nên sử dụng IDE gì trên Linux" lần thứ 4 trong một hoặc hai ngày.
Ben Collins

Có lẽ bạn nên xem ngày mà câu hỏi này được hỏi ... hoặc chỉ ra những câu hỏi mới hơn ở đây
sven

Trong bản phát hành cuối cùng, Eclipse đã tích hợp eclipse.org/linuxtools vào đào tạo phát hành của mình - dự án đó nhằm mục đích biến Eclipse thành một C / C ++ IDE hoàn chỉnh hơn trên Linux bằng cách tích hợp các công cụ dành riêng cho Linux.
Jean Hominal

Câu trả lời:


259

Ban đầu: nhầm lẫn

Khi ban đầu viết câu trả lời này, gần đây tôi đã thực hiện chuyển đổi từ Visual Studio (với nhiều năm kinh nghiệm) sang Linux và điều đầu tiên tôi làm là cố gắng tìm một IDE hợp lý. Tại thời điểm này là không thể: không có IDE tốt tồn tại.

Epiphany: UNIX là một IDE. Tất cả. 1

Và sau đó tôi nhận ra rằng IDE trong Linux là dòng lệnh với các công cụ của nó:

  • Đầu tiên bạn thiết lập vỏ của bạn
    • Bash, trong trường hợp của tôi, nhưng nhiều người thích
    • hoặc
    • (Ôi trời) Zsh ;
  • và biên tập viên của bạn; chọn chất độc của bạn - cả hai đều là nghệ thuật:

Tùy thuộc vào nhu cầu của bạn, sau đó bạn sẽ phải cài đặt và định cấu hình một số bổ trợ để trình chỉnh sửa hoạt động tốt (đó là một phần khó chịu). Ví dụ: hầu hết các lập trình viên trên Vim sẽ được hưởng lợi từ YouCompleteMe plugin để tự động hoàn thành thông minh.

Khi đã xong, shell là giao diện lệnh của bạn để tương tác với các công cụ khác nhau - Debuggers (gdb), Profilers (gprof, valgrind), v.v. Bạn thiết lập môi trường dự án / xây dựng của mình bằng Make , CMake , SnakeMake hoặc bất kỳ công cụ nào khác lựa chọn thay thế. Và bạn quản lý mã của mình bằng hệ thống kiểm soát phiên bản (hầu hết mọi người sử dụng Git ). Bạn cũng sử dụng tmux (trước đây cũng là màn hình) để ghép kênh (= nghĩ nhiều cửa sổ / tab / bảng) và duy trì phiên cuối của bạn.

Vấn đề là, nhờ vào trình bao và một vài quy ước viết công cụ, tất cả đều tích hợp với nhau . Và theo cách đó , Linux shell là một môi trường phát triển tích hợp thực sự , hoàn toàn ngang bằng với các IDE hiện đại khác. (Điều này không có nghĩa là các IDE riêng lẻ không có các tính năng mà dòng lệnh có thể thiếu, nhưng điều ngược lại cũng đúng.)

Để mỗi người của họ

Tôi không thể phóng đại các chức năng của công việc trên tốt như thế nào một khi bạn đã có thói quen. Nhưng một số người chỉ đơn giản thích các trình soạn thảo đồ họa và trong những năm kể từ khi câu trả lời này được viết ban đầu, Linux đã có được một bộ IDE đồ họa tuyệt vời cho một số ngôn ngữ lập trình khác nhau (nhưng theo như tôi biết, đối với C ++). Đừng thử cho họ ngay cả khi - như tôi - cuối cùng bạn không sử dụng chúng. Đây chỉ là một lựa chọn nhỏ và thiên vị:

Hãy nhớ rằng danh sách này là không đầy đủ.


1 Tôi đã đánh cắp tiêu đề đó từ bình luận của dsm.

2 Tôi đã từng đề cập đến Vim ở đây. Và trong khi Vim đơn giản vẫn còn nhiều khả năng, Neovim là một khởi động lại đầy hứa hẹn và nó đã hiện đại hóa một vài mụn cóc cũ.


223
Tôi rất không đồng ý. một ide đàng hoàng là quan trọng cho dù bạn đang làm gì. nó làm tăng mạnh năng suất tôi sử dụng codeblocks và thấy rằng việc quay trở lại VI là gần như không thể. Tôi đã mã hóa trên Mac, Win và Linux, và mặc dù tôi thấy studio hình ảnh là IDE tốt nhất, các codeblocks đã kết thúc.
DavidG

35
David, có lẽ bạn có thể nói chi tiết (câu trả lời của riêng mình) chính xác những gì bạn đang thiếu từ chuỗi công cụ mà tôi đã mô tả mà một IDE mang lại. Như tôi đã nói, tôi đến từ một nền tảng IDE mạnh mẽ và tăng năng suất của tôi là nghịch đảo chính xác của bạn.
Konrad Rudolph

48
Vim cung cấp hỗ trợ tái cấu trúc nào? Trong Eclipse (chạy trên Linux), tôi có thể thay đổi tên của bất kỳ phương thức Java nào tôi muốn, ngay cả khi nó được gọi ở 300 vị trí. Bạn có thể làm điều đó dễ dàng trong Vim?
quant_dev

25
quant_dev: tái cấu trúc yêu cầu phân tích mã nguồn theo một cách nào đó. Theo tôi biết, không có mô-đun VIM nào làm được điều đó nên câu trả lời cho câu hỏi của bạn là không có gì. Đó là một trong những lý do để thích IDE cho các ngôn ngữ tập trung vào IDE như Java. Do hỗ trợ tái cấu trúc (vv) cho C ++ dù sao cũng rất nhỏ (ngay cả trong IDE), nên điều này không áp dụng cho C ++.
Konrad Rudolph

11
@hasen: oh nhưng phần lớn của nó có thể . Đổi tên nhận biết phạm vi, ví dụ. Và hãy tin tôi, điều này là lớn . Và Ecplise (ví dụ) có thể tiết kiệm rất nhiều công việc ở đây.
Konrad Rudolph

86

Sở thích cá nhân của tôi là CodeLite 2.x IDE.

xem: http://www.codelite.org

Quyết định sử dụng CodeLite dựa trên một nghiên cứu liên quan đến IDE C ++ sau đây cho Linux:

  • Eclipse Galileo với Plugin CDT
  • NetBeans 6.7 (cũng là cơ sở cho SunStudio IDE)
  • Phát triển4
  • CodeBlocks 8.02
  • CodeLite 2.x

Sau khi tất cả tôi đã quyết định sử dụng CodeLite 2.x .

Dưới đây tôi đã liệt kê một số ưu và nhược điểm liên quan đến các IDE C ++ được đề cập. Xin lưu ý rằng điều này chỉ phản ánh ý kiến ​​cá nhân của tôi!

EDIT : thật đáng tiếc khi SOF không hỗ trợ các bảng, vì vậy tôi phải viết thành đoạn ...

Eclipse Galileo với Plugin CDT

Ưu điểm:

  • hợp lý nhanh
  • cũng hỗ trợ Java, Perl (với plugin EPIC)
  • thường được sử dụng và bảo trì tốt
  • cũng có sẵn cho các hương vị hệ điều hành khác (Windows, MacOS, Solaris, AIX (?))

Nhược điểm:

  • GUI rất khó hiểu và hơi không nhất quán - hoàn toàn không trực quan
  • trọng lượng nặng
  • Chỉ hỗ trợ CVS (AFAIK)

NetBeans 6.7 (lưu ý đây cũng là cơ sở cho SunStudio IDE)

Ưu điểm:

  • một trong những GUI trực quan nhất tôi từng thấy
  • cũng hỗ trợ Java, Python, Ruby
  • tích hợp CVS, SVN, Mercurial
  • thường được sử dụng và bảo trì tốt
  • cũng có sẵn cho các hương vị hệ điều hành khác (Windows, MacOS, Solaris)

Nhược điểm:

  • cực kỳ chậm
  • trọng lượng nặng
  • sử dụng Spaces để thụt lề, đây không phải là chính sách trong công việc của tôi. Tôi chắc chắn đây là cấu hình, nhưng tôi không thể tìm ra cách để làm điều đó

KDevelop4 (lưu ý: Tôi không thử nghiệm nhiều về nó)

Ưu điểm:

  • thường được sử dụng trên Linux
  • tích hợp CVS, SVN, Mercurial

Nhược điểm:

  • GUI trông hơi lỗi thời
  • trọng lượng nặng
  • rất đặc trưng cho môi trường KDE

CodeBlocks 8.02 (lưu ý: Tôi không thử nghiệm nhiều về nó)

Ưu điểm:

  • hợp lý nhanh

Nhược điểm:

  • GUI trông hơi lỗi thời (mặc dù nó có màn hình khởi động đẹp)
  • phông chữ trong trình chỉnh sửa rất nhỏ
  • một số biểu tượng (ví dụ: các biểu tượng liên quan đến trình gỡ lỗi bắt đầu / bước) rất nhỏ
  • không tích hợp kiểm soát nguồn

CodeLite 2.x (lưu ý: đây là sở thích cá nhân của tôi)

Ưu điểm:

  • GUI trực quan và hiện đại nhất, tốt nhất tôi từng thấy trên Linux
  • nhẹ
  • hợp lý nhanh
  • tích hợp SVN
  • cũng có sẵn trên các hương vị hệ điều hành khác (Windows, MacOS, Solaris (?))

Nhược điểm:

  • không tích hợp CVS (điều đó quan trọng đối với tôi vì tôi phải sử dụng nó trong công việc)
  • không hỗ trợ cho Java, Perl, Python (sẽ rất tuyệt nếu có)

14
Eclispe có hỗ trợ cho Hg, Git, SVN và những người khác thông qua các plugin. Và màn hình khởi động / giật gân hút những quả bóng khổng lồ. Họ hút tài nguyên và cung cấp rất ít lợi ích. Và chúng thường bật lên trước bất cứ điều gì tôi đang làm trong khi chờ ứng dụng tải. PortableApps và Eclipse cần phải loại bỏ chúng.
Chris K

4
Codelite có phím tắt tương tự như Visual Studio để gỡ lỗi, làm cho nó rất thân thiện với người nghiện Visual.
Siêu cúp Raoul

Có thể đánh bại một con ngựa già ở đây, nhưng GUI của nhật thực IMO thực sự không thể so sánh được. Đúng, ban đầu rất khó học, nhưng nó giống như Vi nơi năng suất bắt đầu tăng vọt sau khi bạn leo lên đường cong học tập dốc. Để chứng minh một điểm, hãy thử nhấn Ctrl + 3 - một trong những tính năng rất tuyệt vời trong nhật thực IMO.
kizzx2

"Nhược điểm: sử dụng Spaces để thụt lề [...] Tôi chắc chắn đây là cấu hình, nhưng tôi không thể tìm ra cách để làm điều đó." Điều đó cho thấy, bạn chưa thực sự sử dụng công cụ, nếu không, cuối cùng bạn đã tìm thấy tùy chọn.
Johan Boulé

5
CodeLite là tuyệt vời, giống như nhai kẹo cao su dentyne. Nó sẽ để lại một hương vị tươi và bạc hà trong miệng của bạn. Nhật thực, trong khi có tính năng, cũng cung cấp cho bạn chất nôn này sau khi bạn sử dụng nó. Tôi biết điều này nghe có vẻ trẻ con, nhưng nó thực sự là phép ẩn dụ tốt nhất để giải thích "cảm giác" khi sử dụng chúng. Tôi chắc rằng những người khác sẽ đồng ý với tôi.
Didier A.

75
  1. Mã :: Khối
  2. CDT Eclipse

Chẳng mấy chốc bạn sẽ thấy rằng IDE là không đủ, và dù sao bạn cũng sẽ phải học công cụ GCC (điều này không khó, ít nhất là học các chức năng cơ bản). Nhưng không có hại trong việc giảm đau chuyển tiếp với các IDE, IMO.


+1 cho codeblocks và yea, chắc chắn bạn sẽ muốn tìm hiểu ít nhất cách biên dịch và chạy các chương trình của mình từ shell, vì mã :: blocks có một số nhược điểm.
Earlz

Eclipse hoàn toàn không phải là IMHO, Code :: Blocks ... chỉ là
rubenvb

7
-1 cho các khối mã. -1 cho nhật thực. Cả hai đều thay đổi UI của họ trong quá trình gỡ lỗi. Đến mức mà một người dùng mới làm quen thường cảm thấy lạc lõng. Cả hai đều không thể gỡ lỗi ngã ba. Cả hai đều có vấn đề khó chịu với tích hợp SVN / CVS. (Nhật thực mới nhất song song với Subclipse bị hỏng trong Gnome kể từ ngày 4/11/11 và gặp sự cố sau mỗi 10 phút). Thiết lập kiểm soát nguồn là một cơn ác mộng và việc tích hợp với các IDE này cũng khó khăn như vậy.
bleepzter

4
@bleepzter -1 để sử dụng SVN / CVS để bắt đầu;)
OneOfOne

1
Mercurial, Git và Bazaar vượt trội về mọi mặt.
OneOfOne

66

Một câu trả lời nhanh, chỉ để thêm một chút kiến ​​thức cho chủ đề này:
Bạn chắc chắn phải kiểm tra NetBeans . Netbeans 6.7 có các tính năng sau:

  • Các dự án và mẫu C / C ++: Hỗ trợ tô sáng cú pháp, hoàn thành mã tự động, thụt lề tự động.
  • Nó có Trình gỡ lỗi C / C ++
  • Hỗ trợ Cấu hình trình biên dịch, Trình quản lý cấu hình và Hỗ trợ Makefile (với Trình hướng dẫn).
  • Nó có Cửa sổ Lớp học, Cửa sổ Sử dụng và Cửa sổ Điều hướng Tệp (hoặc bảng điều khiển).
  • Một khung nhìn mở rộng Macro , và cả các chú giải công cụ .
  • Hỗ trợ phát triển QT .

Tôi nghĩ đó là một sự thay thế Visual Studio hoàn hảo (và tốt hơn nhiều) và là một công cụ rất tốt để học C / C ++.

Chúc may mắn!


2
Nó cũng thực sự tốt cho c ++. Nó có trình phân tích cú pháp ngôn ngữ tốt nhất từng có.
Johan Boulé

1
Tôi thích Netbeans hơn nhiều so với Eclipse để phát triển c ++.
Thomas Langston

9
NetBeans thú vị hơn nhiều so với Eclipse, tôi thực sự mong muốn nhiều người bắt đầu nhận ra điều đó.
Didier A.

1
Sau khi chiến đấu với Eclipse trong nhiều tuần tôi đã tìm thấy điều này, chuyển sang NetBeans và Cảm ơn bạn! Nó có giao diện đẹp hơn, phản ứng nhanh hơn, trực quan và tùy biến. Beats Eclipse xuống tay
Frederik

1
Một phiếu bầu khác ở đây cho NetBeans tốt hơn nhiều so với Eclipse. Nó cũng có phần mô phỏng Vim tốt nhất (dưới dạng plugin) mà tôi từng sử dụng.
button

52

Ít nhất là đối với các dự án cụ thể của Qt, Trình tạo Qt (từ Nokia / Trolltech / Digia) cho thấy nhiều hứa hẹn.


10
Tôi sử dụng nó cho các dự án không Qt là tốt.
Cơ hội

Nó là tốt đẹp Tôi đã thử nó và thích nó rất nhiều.
Tyler Long

32

bạn có thể làm rõ hơn một chút về cách nó dành cho bạn, những gì bạn phải thay đổi. Có lẽ bạn có thể chỉ cho tôi đi đúng hướng bằng cách cung cấp một số liên kết đến thông tin bạn đã sử dụng.

Nguồn đầu tiên của tôi thực sự là các mantrang của công cụ . Chỉ loại

$ man toolname

trên dòng lệnh ( $đây là một phần của dấu nhắc, không phải đầu vào).

Tùy thuộc vào nền tảng, chúng được viết khá tốt và cũng có thể được tìm thấy trên internet. Trong trường hợp make, tôi thực sự đọc tài liệu đầy đủ mất vài giờ. Trên thực tế, tôi không nghĩ rằng điều này là cần thiết hoặc hữu ích trong hầu hết các trường hợp nhưng tôi đã có một vài yêu cầu đặc biệt trong các bài tập đầu tiên của tôi trong Linux yêu cầu một tệp thực hiện tinh vi. Sau khi viết makefile, tôi đưa nó cho một đồng nghiệp có kinh nghiệm, người đã thực hiện một số điều chỉnh và chỉnh sửa nhỏ. Sau đó, tôi biết khá nhiều make.

Tôi đã sử dụng GVIM vì tôi đã có một số (nhưng không nhiều) kinh nghiệm trước đó, tôi không thể nói bất cứ điều gì về Emacs hoặc các lựa chọn thay thế. Tôi thấy nó thực sự giúp đọc .gvimrctập tin cấu hình của người khác . Nhiều người đưa nó lên web. Đây là của tôi .

Đừng cố gắng thành thạo tất cả các binutils cùng một lúc, có quá nhiều chức năng. Nhưng có được một cái nhìn tổng quan để bạn sẽ biết nơi tìm kiếm khi cần một cái gì đó trong tương lai. Tuy nhiên, bạn nên biết tất cả các tham số quan trọng cho g++ld(công cụ liên kết GCC được gọi tự động trừ khi được ngăn chặn rõ ràng).

Tôi cũng tò mò, bạn có hoàn thành mã và tô sáng cú pháp khi viết mã không?

Làm nổi bật cú pháp: có, và tốt hơn nhiều so với Visual Studio. Mã hoàn thành: có- ish . Đầu tiên, tôi phải thừa nhận rằng tôi đã không sử dụng hoàn thành mã C ++ ngay cả trong Visual Studio bởi vì (so với VB và C #) nó không đủ tốt. Bây giờ tôi không sử dụng nó thường xuyên nhưng tuy nhiên, GVIM hỗ trợ hoàn thành mã gốc cho C ++. Kết hợp với các ctags thư viện và một plug-in như taglist này gần như là một IDE.

Thật ra, điều khiến tôi bắt đầu là một bài viết của Armin Ronacher. Trước khi đọc văn bản, hãy nhìn vào ảnh chụp màn hình ở cuối của nó!

Bạn có phải biên dịch trước khi nhận lỗi (cú pháp) không?

Đúng. Nhưng điều này cũng tương tự đối với Visual Studio, phải không (Tôi chưa bao giờ sử dụng Whole Tomato)? Tất nhiên, tô sáng cú pháp sẽ hiển thị cho bạn dấu ngoặc không khớp nhưng đó là tất cả.

và làm thế nào để bạn gỡ lỗi (một lần nữa nghĩ điểm dừng vv)?

Tôi sử dụng gdbđó là một công cụ dòng lệnh. Ngoài ra còn có một giao diện đồ họa được gọi là DDD. gdblà một công cụ sửa lỗi hiện đại và có thể làm mọi thứ bạn có thể làm trong IDE. Điều duy nhất thực sự làm tôi khó chịu là đọc dấu vết ngăn xếp vì các dòng không được thụt lề hoặc định dạng nên rất khó quét thông tin khi bạn sử dụng nhiều mẫu (mà tôi làm). Nhưng những thứ đó cũng làm lộn xộn dấu vết ngăn xếp trong IDE.

Như tôi đã nói, tôi có 'niềm vui' khi đặt những bước đầu tiên của mình trong ngôn ngữ lập trình Java bằng cách sử dụng windows notepad và trình biên dịch java dòng lệnh ở trường trung học, và đó là, ... đón một cơn ác mộng! chắc chắn khi tôi có thể so sánh nó với các khóa học lập trình khác mà tôi đã có sau đó, nơi chúng tôi có IDE tốt

Thậm chí, bạn không nên thử so sánh một trình soạn thảo đầy đủ tính năng hiện đại như Emacs hoặc GVIM với Notepad. Notepad là một TextBoxđiều khiển được tô điểm , và điều này thực sự tạo ra sự khác biệt. Ngoài ra, làm việc trên dòng lệnh là một trải nghiệm rất khác nhau trong Linux và Windows. Windows cmd.exebị tê liệt nghiêm trọng. PowerShell tốt hơn nhiều.

/ EDIT: Tôi nên đề cập rõ ràng rằng GVIM đã chỉnh sửa theo tab (như trong duyệt web theo tab, không phải tab-vs-space)! Tôi mất nhiều thời gian để tìm thấy chúng mặc dù chúng không bị ẩn đi. Chỉ cần nhập :tabethay vì đơn giản :ekhi mở tệp hoặc tạo tệp mới và GVIM sẽ tạo một tab mới. Chuyển đổi giữa các tab có thể được thực hiện bằng cách sử dụng con trỏ hoặc một số phím tắt khác nhau (tùy thuộc vào nền tảng). Khóa gt(loại g, sau đó tở chế độ lệnh) sẽ hoạt động ở mọi nơi và nhảy sang tab tiếp theo hoặc tab không. n nếu một số được đưa ra. Nhập :help gtđể nhận thêm trợ giúp.


@confuzatron: Không, tôi sử dụng gdb vì nhiều lý do. Quan trọng nhất, tôi thường làm việc mà không có máy chủ X nào chạy. Ngoài ra, tôi hơi khó chịu về việc DDD đã không thấy bất kỳ bản cập nhật nào trong một thời gian dài. Mặt khác, quyền sở hữu dự án vừa thay đổi và dường như có những thay đổi đang diễn ra.
Konrad Rudolph

Cảm ơn về thông tin tab wrt gvim, không bao giờ mới đó :)
Letkeeprus

VS2010 nổi bật lỗi cú pháp mà không cần biên dịch.
Kẹo Chiu

@Candy đúng, VS2010 đã thay đổi rất nhiều thứ về vấn đề này và thêm các tính năng nâng cao để biên dịch nền. Nhưng gvim cũng đã thêm rất nhiều tính năng thông qua các plugin trong khi đó. Đặc biệt, bạn có thể có thể nhận được cú pháp tô sáng lỗi mà không cần biên dịch qua clang_completeplugin ngay bây giờ. Câu trả lời này là từ năm 2009 và một số phần đã lỗi thời. Nhưng đã có những cải tiến trên tất cả các mặt để nó ít nhiều phát triển ra.
Konrad Rudolph

25

Không lặp lại một câu trả lời, nhưng tôi nghĩ rằng tôi có thể thêm một chút nữa.

Slickedit là một IDE tuyệt vời.

Nó hỗ trợ tốt các cơ sở mã lớn mà không làm chậm hoặc dành toàn bộ thời gian lập chỉ mục. (Đây là một vấn đề tôi gặp phải với cdt của nhật thực). Tốc độ của Slickedit có lẽ là điều tốt nhất về nó, thực sự.
Mã hoàn thành hoạt động tốt và có một số lượng lớn các tùy chọn cho những thứ như định dạng tự động, làm đẹp và tái cấu trúc.
Nó không có gỡ lỗi tích hợp.
Nó có hỗ trợ trình cắm và cộng đồng khá tích cực tạo ra chúng.
Về lý thuyết, bạn sẽ có thể tích hợp tốt với những người làm công cụ tạo tệp truyền thống, vì nó cho phép bạn tạo một dự án trực tiếp từ một, nhưng nó không hoạt động trơn tru như tôi muốn khi tôi thử nó.
Ngoài Linux, còn có phiên bản Mac và Windows của nó, nếu bạn cần chúng.


23

Là một người UNIX thời xưa, tôi luôn sử dụng Emacs. Nhưng điều đó có một đường cong học tập khá dốc và dài, vì vậy tôi không chắc mình có thể giới thiệu nó cho người mới.

Thực sự không có IDE "tốt" cho Linux. Eclipse không tốt cho C / C ++ (CDT đang được cải thiện, nhưng vẫn chưa hữu ích lắm). Những người khác đang thiếu tất cả các tính năng bạn sẽ tìm kiếm.

Điều thực sự quan trọng là tìm hiểu làm thế nào tất cả các công cụ riêng lẻ (gcc, make, gdb, v.v.) hoạt động. Sau khi bạn làm như vậy, bạn có thể thấy cách làm của Visual Studio rất hạn chế.


CDT Eclipse "chưa hữu ích lắm?" Xây dựng sẽ hữu ích. Tôi thấy nó cực kỳ hữu ích (và dễ sử dụng).
John Zwinck

"chưa hữu ích lắm": tự động hoàn thành thường không hoạt động, điều hướng đến khai báo hoặc sử dụng các hàm không hoạt động, tô sáng cú pháp không luôn hoạt động, tái cấu trúc không hoạt động, v.v ... Tốt hơn một chút so với sử dụng vi. Giao diện người dùng giao diện GDB là thứ duy nhất làm cho nó đáng sử dụng, IMHO.
Kristopher Johnson

Tôi đã không thực sự cố gắng tái cấu trúc với CDT, nhưng những thứ khác dường như hoạt động. Tôi sẽ lưu ý rằng tôi chạy Eclipse với một số tham số cấu hình sử dụng bộ nhớ tối đa khá lớn (tôi có 8-12 GB RAM), nhưng có vẻ tốt.
John Zwinck

Lần trước tôi đã thử CDT của Eclipse, trình phân tích cú pháp / ngữ nghĩa để tự động hoàn thành đã khiến toàn bộ IDE đóng băng trong 8 giây mỗi lần nó được gọi. Nó làm cho toàn bộ tính năng trở nên vô dụng. Tôi không thể tin rằng thứ không chạy trong chủ đề riêng của nó. Đây là hai năm trước, vì vậy nó hy vọng sẽ được sửa chữa. (phải không?)

Tôi thấy CDT tuyệt vời cho những bước chuyển của tôi vào QT và Boost. Trên các cửa sổ với Mingw, nó có vấn đề, nhưng trong môi trường Posix thích hợp, tự động hoàn tất hoạt động rất tốt! Việc điều hướng đến các tuyên bố thực sự là một lỗ hổng rõ ràng. Nhưng xem xét rằng C ++ có thể có nhiều khai báo giống hệt nhau, tôi không ngạc nhiên. Đây là một vấn đề khó giải quyết hơn trong Java.
Chris K

18

Hãy kiểm tra Netbeans, nó được viết bằng Java vì vậy bạn sẽ có cùng một môi trường bất kể HĐH của bạn và nó hỗ trợ nhiều hơn là chỉ C ++.

Tôi sẽ không cố gắng thuyết phục bạn, bởi vì tôi nghĩ IDE có thể là một lựa chọn rất cá nhân. Đối với tôi, nó cải thiện năng suất của tôi bằng cách nhanh chóng, hỗ trợ các ngôn ngữ tôi mã hóa và có các tính năng tiêu chuẩn mà bạn mong đợi từ một IDE.


5
Tôi chỉ có thể thêm +1 của mình vào đây. netbeans có trình phân tích cú pháp ngôn ngữ c ++ tốt nhất mà tôi từng thấy trong một ide; nhịp đập của cdt nhật thực.
Johan Boulé

18

Chỉ cần theo dõi nhanh cho câu hỏi này ...

Đã một tháng kể từ khi tôi bắt đầu sử dụng Vim làm công cụ 'GUI' chính của mình để lập trình C ++ trong Linux. Lúc đầu, đường cong học tập thực sự hơi dốc nhưng sau một thời gian và với các tùy chọn phù hợp được bật và các kịch bản đang chạy tôi thực sự hiểu rõ điều đó!

Tôi thích cách bạn có thể định hình Vim để đáp ứng nhu cầu của bạn; chỉ cần thêm / thay đổi ánh xạ khóa và Vim được chuyển thành 'IDE' có năng suất cao.

Chuỗi công cụ để xây dựng và biên dịch chương trình C ++ trên Linux cũng thực sự trực quan. make và g ++ là những công cụ bạn sẽ sử dụng.

Trình gỡ lỗi ddd tuy nhiên không thực sự tốt, nhưng có lẽ đó là vì tôi chưa có thời gian để làm chủ nó đúng cách.

Vì vậy, với bất kỳ ai đang hoặc đang tìm kiếm một IDE C ++ tốt trong Linux, giống như tôi, bạn nên đặt cược với các công cụ có sẵn tiêu chuẩn trong chính Linux (Vim, g ++, ddd) và ít nhất bạn nên thử sử dụng họ, trước khi tìm kiếm con trai khác ...

Cuối cùng nhưng không kém phần quan trọng, tôi thực sự muốn cảm ơn konrad vì câu trả lời của anh ấy ở đây, Nó thực sự giúp tôi tìm đường trong môi trường phát triển Linux, cảm ơn bạn!

Tôi cũng không kết thúc câu hỏi này, vì vậy mọi người vẫn có thể phản ứng hoặc thậm chí có thể thêm các đề xuất hoặc bổ sung mới vào các câu trả lời thực sự hay ...


Bạn có thể có các tính năng IntelliSense-ish để hoạt động trong Vim + ctags không? Không thực sự chỉ tự động hoàn thành, nhưng thông tin nhạy cảm theo ngữ cảnh như danh sách tham số cho chức năng, v.v.?
kizzx2

@ kizzx2: Vâng , có rất nhiều lựa chọn .
Fred Nurk


12

Câu trả lời ngắn gọn hơn là: chọn bất kỳ "trình soạn thảo" nào bạn thích, sau đó sử dụng bảng điều khiển GDB hoặc giao diện GDB đơn giản để gỡ lỗi ứng dụng của bạn. Các trình sửa lỗi đi kèm với các IDE ưa thích như Netbeans hút cho C / C ++. Tôi sử dụng Netbeans làm trình soạn thảo của mình và bảng điều khiển Insight và GDB làm trình gỡ lỗi.

Với cái nhìn sâu sắc, bạn có một GUI đẹp và sức mạnh thô của GDB.

Ngay khi bạn quen với các lệnh GDB, bạn sẽ bắt đầu yêu thích nó vì bạn có thể làm những việc bạn sẽ không bao giờ có thể làm được bằng GUI. Bạn thậm chí có thể sử dụng Python làm ngôn ngữ kịch bản nếu bạn đang sử dụng GDB 7 hoặc phiên bản mới hơn.

Hầu hết mọi người ở đây đã chú ý nhiều hơn đến "Biên tập viên" của các IDE. Tuy nhiên, nếu bạn đang phát triển một dự án lớn trong C / C ++, bạn có thể dễ dàng dành hơn 70% thời gian cho "trình gỡ lỗi". Các trình sửa lỗi của các IDE ưa thích chậm hơn Visual Studio ít nhất 10 năm. Chẳng hạn, Netbenas có giao diện rất giống với Visual Studio. Nhưng trình gỡ lỗi của nó có một số nhược điểm so với Visual Studio.

  1. Rất chậm để hiển thị ngay cả một mảng chỉ với vài trăm phần tử
  2. Không tô sáng cho giá trị thay đổi (Theo mặc định, studio hình ảnh hiển thị giá trị thay đổi trong cửa sổ đồng hồ màu đỏ)
  3. Khả năng hiển thị bộ nhớ rất hạn chế.
  4. Bạn không thể sửa đổi mã nguồn sau đó tiếp tục chạy. Nếu một lỗi mất nhiều thời gian để khắc phục, bạn muốn thay đổi nguồn và áp dụng các thay đổi trực tiếp và tiếp tục chạy ứng dụng của bạn.
  5. Bạn không thể thay đổi "tuyên bố tiếp theo" để chạy. Trong Visual Studio, bạn có thể sử dụng "Đặt tuyên bố tiếp theo" để thay đổi cách ứng dụng của bạn chạy. Mặc dù tính năng này có thể làm sập ứng dụng của bạn nếu không được sử dụng đúng cách, nhưng nó sẽ giúp bạn tiết kiệm rất nhiều thời gian. Ví dụ: nếu bạn thấy trạng thái của ứng dụng của mình không đúng, nhưng bạn không biết điều gì đã gây ra sự cố, bạn có thể muốn chạy lại một vùng nhất định của mã nguồn mà không cần khởi động lại ứng dụng của mình.
  6. Không hỗ trợ tích hợp cho STL như vector, danh sách, deque và bản đồ, v.v.
  7. Không có điểm xem. Bạn cần phải có tính năng này, khi bạn cần dừng ứng dụng của mình ngay tại thời điểm một biến được thay đổi. Các máy tính dựa trên Intel có các điểm theo dõi phần cứng để các điểm đồng hồ sẽ không làm chậm hệ thống của bạn. Có thể mất nhiều giờ để tìm một số lỗi khó tìm mà không sử dụng điểm xem. "Visual Studio" gọi "con trỏ đồng hồ" là "Data Breakpoint".

Danh sách có thể dài hơn rất nhiều.

Tôi đã rất thất vọng bởi những bất lợi của Netbeans hoặc các IDE tương tự khác, vì vậy tôi đã bắt đầu tự học GDB. Tôi thấy bản thân GDB rất mạnh. GDB không có tất cả các "nhược điểm" được đề cập ở trên. Trên thực tế, GDB rất mạnh mẽ, nó thậm chí còn tốt hơn Visual Studio về nhiều mặt. Ở đây tôi chỉ cho bạn một ví dụ rất đơn giản.

Chẳng hạn, bạn có một mảng như:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Khi ứng dụng của bạn dừng lại và bạn muốn kiểm tra dữ liệu trong IdAndValues. Chẳng hạn, nếu bạn muốn tìm các thứ tự và giá trị trong mảng cho một "ID" cụ thể, bạn có thể tạo một tập lệnh như sau:

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

Bạn có thể sử dụng tất cả các biến trong ứng dụng của mình trong ngữ cảnh hiện tại, các biến của riêng bạn (trong ví dụ của chúng tôi là $ i), các đối số được truyền (trong ví dụ của chúng tôi, đó là $ arg0) và tất cả các lệnh GDB (tích hợp hoặc do người dùng xác định ).

Sử dụng PrintVal 1 từ dấu nhắc GDB để in ra các giá trị cho ID "1"

Nhân tiện, NetBeans đi kèm với bảng điều khiển GDB, nhưng bằng cách sử dụng bảng điều khiển, bạn có thể gặp sự cố với Netbeans. Và tôi tin rằng đó là lý do tại sao giao diện điều khiển bị ẩn theo mặc định trong NetBeans


Điểm tốt. Nhưng thật không may, GDB có một đường cong học tập cực kỳ dốc. Tôi đã sử dụng nó trong nhiều năm nay và tôi vẫn chưa bao giờ sử dụng macro, và (mặc dù tôi biết điều này là có thể thông qua các macro!) Bất kỳ mã STL nào tôi ném vào nó đều không thể gỡ lỗi tốt hơn trong các IDE hiện đại.
Konrad Rudolph

Tôi đã dành 2 ngày để thành thạo hầu hết các lệnh trong GDB. Một khi bạn biết sức mạnh thô của GBD, bạn sẽ không bao giờ nhìn lại. Nó sẽ giúp bạn tiết kiệm rất nhiều thời gian khi bạn sửa các lỗi khó tìm.
Charles Zhang

11

Tôi đang sử dụng " Geany " cho đến nay, IDE nhanh và nhẹ của nó.

Trong số các tính năng của Geany là :

  • Mã gấp
  • Tiết kiệm phiên
  • Các tính năng IDE cơ bản như tô sáng cú pháp, tab, thụt lề tự động và hoàn tất mã
  • Quản lý dự án đơn giản
  • Xây dựng hệ thống
  • Bộ chọn màu (tiện dụng đáng ngạc nhiên trong quá trình phát triển web)
  • Thi đua thiết bị đầu cuối nhúng
  • Mẹo gọi
  • Danh sách biểu tượng
  • Tự động hoàn thành các cấu trúc phổ biến (như if, other, while, v.v.)

10

Nếu bạn thích Eclipse cho Java, tôi đề xuất CDT Eclipse. Mặc dù hỗ trợ C / C ++ không mạnh mẽ như đối với Java, nhưng nó vẫn cung cấp hầu hết các tính năng. Nó có một tính năng hay có tên Managed Project, giúp làm việc với các dự án C / C ++ dễ dàng hơn nếu bạn không có kinh nghiệm với Makefiles. Nhưng bạn vẫn có thể sử dụng Makefiles. Tôi làm mã hóa C và Java và tôi thực sự hài lòng với CDT. Tôi đang phát triển phần sụn cho một thiết bị nhúng trong C và một ứng dụng trong Java nói chuyện với thiết bị này và thật tuyệt khi sử dụng cùng một môi trường cho cả hai. Tôi đoán nó có thể làm cho tôi năng suất hơn.


9

Tôi thích cách mọi người hoàn toàn bỏ lỡ yêu cầu trong câu hỏi ban đầu cho một IDE. Linux KHÔNG phải là một IDE. Đó không phải là những từ đó có nghĩa là gì. Tôi đã học c và c ++ bằng cách sử dụng vi và gcc và tạo ra, và tôi không nói rằng chúng không phải là công cụ đầy đủ, nhưng chúng KHÔNG phải là một IDE. Ngay cả khi bạn sử dụng các công cụ phức tạp hơn như vim hoặc emacs hoặc bất kỳ trình soạn thảo ưa thích nào bạn muốn, việc gõ các lệnh trên một dòng lệnh không phải là một IDE.

Ngoài ra, tất cả các bạn đều biết làm cho tồn tại như là một phần của studio hình ảnh phải không? Ý tưởng rằng một IDE "giới hạn" chỉ là ngớ ngẩn nếu bạn có thể sử dụng IDE để tăng tốc một số thứ, nhưng vẫn có thể quay trở lại với công cụ dòng lệnh khi cần.

Tất cả những gì đã nói, tôi đề nghị, như một số người ở trên đã thử các khối Mã. Nó làm nổi bật mã khá, một cách khá dễ dàng để tạo một dự án, viết mã, chạy nó, v.v., đó là cốt lõi của một IDE thực sự và có vẻ khá ổn định. Gỡ lỗi hút ... Tôi chưa bao giờ thấy một trình gỡ lỗi tương tác tốt trong bất kỳ biến thể linux / unix nào. gdb không phải là nó. Nếu bạn đã quen với việc gỡ lỗi theo phong cách phòng thu trực quan, bạn sẽ gặp khá nhiều may mắn.

Dù sao, tôi sẽ đi đóng gói đồ đạc của mình, tôi biết đám đông linux chỉ có một lượt xem sẽ hét lên và đuổi tôi ra khỏi thị trấn ngay lập tức.


Bạn có một điểm. Nó không phải là một IDE như chúng ta biết. Tuy nhiên, thật thú vị khi OP đã bình chọn cho câu trả lời đó! Đóng đinh màu sắc của tôi vào cột buồm: Tôi là một fan hâm mộ của dòng lệnh makefiles.
ScrollerBlaster

Cuối cùng, ai đó có bộ não ... Tôi đoán những người khác chỉ viết mã những thứ tầm thường nếu họ có thể làm mọi thứ với emacs / vim.
Pippo


7

Tôi khá thích IDE của Ultimate ++ . Nó có một số tính năng được thiết kế để sử dụng với thư viện riêng của họ (BTW, là một bộ công cụ khá hay nếu bạn không muốn mua trên GTK + hoặc QT) nhưng nó hoạt động hoàn toàn tốt với các dự án C ++ chung. Nó cung cấp hoàn thành mã tốt, tô màu cú pháp tốt, gỡ lỗi tích hợp và tất cả các tính năng khác mà hầu hết các IDE hiện đại hỗ trợ.


ồ Về ảnh chụp màn hình thực sự trông tuyệt vời! Tôi chắc chắn sẽ thử một lần. Bạn có biết nếu tôi phải trả tiền cho nó? (Đó không phải khá rõ ràng trên trang web Ultimate ++)

Không, nó miễn phí như trong "bài phát biểu", "bia" và "đi xe". Họ thậm chí còn khá cởi mở về việc chấp nhận các bản vá và phát hành rất thường xuyên, vì vậy nó là nguồn mở như nó có được :)
dguaraglia

7

Tôi thực sự đề nghị codeblocks . Nó không nặng như Eclipse và nó có hỗ trợ dự án Visual Studio.


6

Có lẽ Dự án Công cụ Linux cho Eclipse có thể đáp ứng nhu cầu của bạn?

Dự án Công cụ Linux nhằm mục đích mang lại một IDE C và C ++ đầy đủ tính năng cho các nhà phát triển Linux. Chúng tôi xây dựng dựa trên các tính năng chỉnh sửa và gỡ lỗi nguồn của CDT và tích hợp các công cụ phát triển gốc phổ biến như GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng, v.v. Trình chỉnh sửa RPM .spec, tích hợp xây dựng Autotools, công cụ phân tích sử dụng heap Valgrind và các công cụ lược tả cuộc gọi OProfile.


6

Trên Linux có rất nhiều IDE:

Theo kinh nghiệm của tôi , giá trị nhất là EclipseQt Creator . Cả hai đều cung cấp tất cả các tính năng "tiêu chuẩn" (nghĩa là tự động hoàn thành, tô sáng cú pháp, trình gỡ lỗi, tích hợp git). Điều đáng chú ý là Eclipse cũng cung cấp các chức năng tái cấu trúc, trong khi Qt Creator cung cấp tích hợp với Valgrind và hỗ trợ triển khai trên các mục tiêu từ xa.

Ngoài ra, IDE CLion thương mại có vẻ tốt (nhưng tôi đã không sử dụng nó rộng rãi).


5

Tôi nghe nói Anjuta khá hấp dẫn đối với người dùng Gnome. Tôi đã chơi một chút với KDevelop và nó rất hay, nhưng thiếu sự kỳ công. Code :: Blocks cũng rất hứa hẹn, và tôi thích cái đó nhất.


5

Sun Studio phiên bản 12 là bản tải xuống miễn phí (hỗ trợ MIỄN PHÍ và có trả tiền) - http://developers.sun.com/sunstudio/doads/thankyou.jsp?submit=%A0FREE+Doad%A0%BB%A0 .

Tôi chắc chắn rằng bạn có hỗ trợ hoàn tất mã và gỡ lỗi bao gồm hỗ trợ plugin trong IDE này.

Sun Studio có sẵn cho Linux cũng như Solaris. diễn đàn: http://developers.sun.com/sunstudio/community/forums/index.jsp . Diễn đàn Sun Studio Linux: http://forum.sun.com/forum.jspa?forumID=855

Tôi rất muốn nghe phản hồi của bạn về công cụ này.

BR,
~ A



5

Và sau đó tôi nhận thấy rằng đây đơn giản không phải là cách bạn làm việc ở đó *, và tôi đã ném mọi thứ ra, dành vài ngày để đọc hướng dẫn sử dụng, thiết lập vỏ của tôi (bash), thiết lập môi trường GVIM, học được chuỗi công cụ GCC / binutils, làm và gdb và sống hạnh phúc mãi mãi về sau.

Tôi hầu như đồng ý, nhưng vấn đề cũng là một trong nhận thức: chúng ta quên mất việc trở nên hiệu quả như thế nào trong bất kỳ IDE đã chọn (hoặc môi trường khác). Tôi thấy IDE (Visual Studio, NetBeans, Eclipse) cồng kềnh đáng kinh ngạc theo nhiều cách.

Là một người UNIX thời xưa, tôi luôn sử dụng Emacs. Nhưng điều đó có một đường cong học tập khá dốc và dài, vì vậy tôi không chắc mình có thể giới thiệu nó cho người mới.

Tôi muốn thứ hai; sử dụng Emacs làm trình soạn thảo chính của tôi trên cả Linux và trên MSW (XP2, W2K). Tôi sẽ không đồng ý rằng nó có một đường cong học tập dốc , nhưng sẽ nói rằng vì số lượng lớn các tính năng mà nó có một đường cong học tập dài . Bạn có thể làm việc hiệu quả trong một thời gian ngắn, nhưng nếu bạn muốn bạn có thể tìm hiểu các tính năng mới của nó trong nhiều năm tới.

Tuy nhiên - đừng hy vọng tất cả các tính năng của Emacs sẽ có trên các menu thả xuống, có quá nhiều chức năng để tìm thấy nó ở đó.

Như tôi đã nói, tôi đã sử dụng GNU Emacs trên MSW trong nhiều năm. Và nó luôn hoạt động tốt với Visual Studio cho đến khi tôi "nâng cấp" lên 2008; bây giờ đôi khi nó trì hoãn nhiều giây trước khi làm mới các tập tin từ đĩa. Lý do chính để chỉnh sửa trong cửa sổ VS là tính năng hoàn tất mã "Intellisense".



5

Mặc dù tôi sử dụng Vim, một số đồng nghiệp của tôi sử dụng SlickEdit trông khá tốt. Tôi không chắc chắn về gỡ lỗi tích hợp bởi vì chúng tôi sẽ không thể làm điều đó trong dự án cụ thể của chúng tôi.

SlickEdit có hỗ trợ tốt cho việc điều hướng các cơ sở mã lớn, với tham chiếu chéo và nhảy thẻ. Tất nhiên nó có các công cụ cơ bản như tô sáng cú pháp và hoàn thành mã.


5

Tôi sử dụng Eclipse CDT và Qt Creator (cho các ứng dụng Qt).

Đó là sở thích của tôi. Đó là một câu hỏi rất gợi ý và có nhiều câu trả lời như có các nhà phát triển. :)


4

SlickEdit. Tôi đã sử dụng và yêu thích SlickEdit từ năm 2005, cả trên Windows và Linux. Tôi cũng có kinh nghiệm làm việc trong Visual Studio (5, 6, 2003, 2005) và chỉ với Emacs và dòng lệnh. Tôi sử dụng SlickEdit với các tệp tạo tệp bên ngoài, một số đồng đội của tôi sử dụng SlickEdit, một số khác sử dụng Emacs / vi. Tôi không sử dụng trình gỡ lỗi tích hợp, kiểm soát phiên bản tích hợp, hệ thống xây dựng tích hợp: Tôi thường thấy quá nhiều tích hợp là nỗi đau thực sự. SlickEdit rất mạnh mẽ (rất ít lỗi), nhanh và trực quan. Nó giống như một chiếc xe Đức, một chiếc xe của tài xế.

Các phiên bản mới nhất của SlickEdit dường như cung cấp nhiều tính năng không khiến tôi quan tâm, tôi hơi lo lắng rằng sản phẩm sẽ trở nên cồng kềnh và bị pha loãng trong tương lai. Hiện tại (tôi sử dụng V13.0) thì thật tuyệt.



3

Nếu bạn đã sử dụng vim trong một thời gian dài, thì bạn thực sự nên biến nó thành IDE của mình. Có rất nhiều addons có sẵn. Tôi tìm thấy một vài trong số đó là khá hữu ích, và biên soạn nó ở đây, hãy xem nó.

Và nhiều hơn nữa trong loạt mẹo & thủ thuật vi / vim ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.