2012-01-05 52 views
9

我確切地說我將這個問題限制爲我的x86(64位)linux盒子的「本地」開發。沒有嵌入式或非x86架構。Linux上的x86 C++開發有什麼(工作)替代工具鏈?

因爲我是一個C++用戶,並且有一個C++文藝復興,我目前使用C++進行個人項目。

現在我正在使用強大的傳統linux/gcc/make工具鏈。

但通過博客文章和做題,我最近才知道的新的有希望的工具:

  • 「」鐺「」爲'GCC',速度快了很多的選擇,讓更好的錯誤信息
  • 「」金「」作爲替代'LD'的,速度快了很多

這些工具是不太知名的,它很容易,甚至不知道他們。

是否還有其他一些我不知道的有趣的不太知名的工具?例如替代gdb之類的? (我也在使用cmake)

我在尋找首先發展的便捷性,然後是發展速度的提高。歡迎任何其他改進。

如果可能的話免費工具。

+1

有英特爾的,它有一個調試器和其他工具ICC編譯器。它在Linux上非商業用途是免費的,否則會花費。 – 2012-01-05 09:47:27

+0

@PaulR謝謝保羅。當然,我對免費工具更感興趣,並且對舊工具有了顯着的改進。 (英特爾聲稱加快執行速度,但我認爲這就是我所知) – Offirmo 2012-01-05 09:51:20

+0

正如我在評論中所說的,ICC *在Linux上非商業用途。除了高質量的代碼生成外,它通常是第一個支持新CPU特性的編譯器(出於顯而易見的原因),例如,最新的SSE,AVX等。 – 2012-01-05 10:32:38

回答

5

您可以通過ccache感興趣(一個編譯器緩存能夠避免無用的重新編譯,並透明地使用直通相同g++命令,只需通過添加您$PATH內的符號鏈接)

對於C(而不是C++)編程,您可能對tinycc感興趣 - 編譯速度非常快(但會生成緩慢運行的二進制代碼)。

編碼時,可能會使用Boehm's garbage collector。請參閱this question與在C++中使用它相關。

並且還使用valgrind來調試您的內存泄漏。

有時,動態加載共享對象dlopen是intersting。在C++中,dlsym -ed符號應該是extern "C"。我有時候喜歡直接生成C或C++代碼,編譯它,並且模塊。

對於建築物,考慮調查其他建築商,例如, omake

編譯時,不要忘記編譯器的-Wall(也許是-Wextra)標誌。新的鏈接時間優化(在您的Makefile中使用CXX=g++ -flto)可能很有趣(但編譯時間受到影響,可執行文件的速度可能會提高10%)。

如果您的源代碼文件共享所有相同的C++頭,則預編譯該頭是值得的。

較新的(例如,優於C++)語言存在,如ocaml的和Haskell也去和D.

使用版本控制系統,如GIT甚至寵物項目。

Qt是一個很好的C++框架,特別是它的圖形工具包。

Wt使您能夠在C++中快速編寫Web界面。 GDB & GDB仍在不斷髮展。不要忘記使用最新版本(例如GCC爲4.6,GDB爲7.3),它們比以前的版本有了很大的改進。

考慮根據您的特定需求通過插件擴展或自定義您的GCC編譯器,或者使用MELT擴展插件更好地進行擴展。

+0

好的答案在這裏(我不會去改變語言,讓我們保持這個問題的軌道)。 tinycc只有C,太糟糕了。我對垃圾收集器感興趣,看看。 – Offirmo 2012-01-05 10:44:23

+0

@Basile Starynkevitch - 值得一提的牆壁 - 所有建築物都需要。 – 2012-01-05 10:46:12

+0

我從來沒聽說過MELT,看起來很有趣,謝謝! – Offirmo 2012-01-05 10:54:29

4

我知道兩個選擇:

兩者都可以代替化妝,因爲它們是大項目更快,因爲他們不這樣做廣泛的檢查。

+0

+1非常有趣,謝謝。 「Make vs Tup」看起來很有前途。你自己用它嗎?現在我們需要一個cmake的tup generator。我看到在這方面有一些努力。 – Offirmo 2012-01-05 10:38:14

+0

@Offirmo我的同事正在努力從make轉換到tup,他提到了30%的改進。 – 2012-01-05 10:47:01

1

爲了替換工具鏈的構成部分,我推薦使用waf,它的速度快,佔地面積小。支持也很好。

我試過黃金,它不是比ld快,但似乎很有希望。它似乎沒有真正維護,但上次我檢查過。

鏗鏘似乎很有希望,但我沒有嘗試過它在一個生產項目。我計劃,因爲其精心設計的思想導致了非常快速的發展。我打算用它來切換到C++ 11 ^^

MY2C

+1

黃金被維護,但在實踐中已經相當成熟。 Google對Gold有積極的興趣。 – 2012-01-05 10:38:27

+1

目前,GCC 4.6似乎比clang 3.0有更好的C++ 11支持 – 2012-01-05 10:44:08

+0

我目前在OSX上使用LLVM GCC(基本上是clang),我發現編譯和一般開發的速度非常快。在XCode中,clang不斷在背景中構建符號表,使得代碼完成響應和上下文感知,並且如前所述,減少了編譯/構建時間。 – 2012-01-05 11:04:10