2012-01-05 12 views
9

Uściślam, że ograniczam to pytanie do "natywnego" rozwoju dla mojego x86 (64-bitowego) systemu Linux. Brak architektury osadzonej lub innej niż x86.Jakie (robocze) alternatywne łańcuchy narzędzi istnieją dla programowania x86 C++ w systemie Linux?

Ponieważ jestem użytkownikiem C++ i istnieje renesans w C++, używam C++ do personalnych projektów.

W tej chwili używam solidnego, tradycyjnego linux/gcc/make toolchain.

Ale przez blogach i tak pytania, niedawno zdał sobie sprawę z nowych narzędzi obiecujących:

  • „lepsze komunikaty o błędach” dzyń „” jako alternatywa dla „” gcc „”, dużo szybciej, dając
  • „” złoto „” jako zamiennik ld „” „”, o wiele szybciej

narzędzia te są mniej znane i łatwo nawet nie wiedzą o nich.

Czy są inne ciekawe mniej znane narzędzia, o których powinienem wiedzieć? Na przykład alternatywa dla gdb lub podobnego? (Używam też cmake)

Poszukuję łatwości rozwoju, a następnie poprawy szybkości rozwoju. Wszelkie inne ulepszenia są mile widziane.

Bezpłatne narzędzia, jeśli to możliwe.

+1

Jest kompilator ICC Intela, która pochodzi z debugera i innych narzędzi. Jest darmowy do niekomercyjnego użytku w systemie Linux, w przeciwnym razie kosztuje. –

+0

@PaulR Dzięki Paul. Oczywiście bardziej interesują mnie darmowe narzędzia i takie, które przynoszą znaczną poprawę w stosunku do starych. (Intel twierdzi, że zwiększa szybkość wykonania, ale to wszystko, o czym myślę). – Offirmo

+0

Jak już wspomniałem w swoim komentarzu, ICC * jest * darmowy do niekomercyjnego użytku w systemie Linux. Oprócz generowania dobrych kodów zazwyczaj jest to pierwszy kompilator obsługujący nowe funkcje procesora (z oczywistych powodów), np. najnowsze SSE, AVX, itp. –

Odpowiedz

5

Ty mogą być zainteresowane przez ccache (cache kompilatora stanie uniknąć niepotrzebnego rekompilacji i przejrzysty użytkowej thru tego samego polecenia g++, po prostu przez dodanie dowiązania wewnątrz $PATH) programowania

Dla C (ale nie C++) , możesz być zainteresowany przez tinycc - który bardzo szybko się kompiluje (ale produkuje powoli działający kod binarny).

Podczas kodowania można użyć Boehm's garbage collector. Zobacz this question związane z używaniem go w C++.

A także użyć valgrind do debugowania wycieków pamięci.

Czasami dynamiczne ładowanie udostępnionego obiektu za pomocą dlopen jest interesujące. Symbole oznaczone jako dlsym powinny być w języku C++ wartością extern "C". Czasami uwielbiam generować kod C lub C++ w locie, kompilowanie go i dlopen -w module.

Aby budować, rozważ zbadanie innych twórców, np. omake.

Podczas kompilacji nie zapomnij o flagę -Wall (i prawdopodobnie -Wextra) kompilatorowi.Nowa optymalizacja czasu połączenia (z CXX=g++ -flto w twoim Makefile) mogłaby być interesująca (ale czas kompilacji cierpi, prawdopodobnie o 10% wzrost prędkości pliku wykonywalnego).

Jeśli pliki z kodem źródłowym mają ten sam nagłówek C++, wstępne kompilowanie tego nagłówka jest opłacalne.

Nowszy (np lepiej niż C++) istnieją języki, jak SML i Haskell ale także Idź i D.

pomocą systemu kontroli wersji GIT nawet jak dla projektów domowych.

Qt jest dobrym środowiskiem C++, szczególnie ze względu na jego zestaw narzędzi graficznych.

Wt umożliwia szybkie tworzenie kodu w C++.

Obie GCC & GDB wciąż ewoluują. Nie zapomnij użyć najnowszych wersji (np. 4.6 dla GCC, 7.3 dla GDB), które zapewniają znaczną poprawę w stosunku do wcześniejszych wersji.

Rozważ rozszerzanie lub dostosowywanie kompilatora GCC do konkretnych potrzeb za pomocą wtyczek lub jeszcze lepiej przy użyciu rozszerzeń MELT.

+0

OK wiele odpowiedzi tutaj (nie posunąłbym się tak daleko, jak zmiana języka, trzymajmy to pytanie na właściwej drodze). tinycc to tylko C, szkoda. Interesuje mnie garbage collector, rzucając okiem. – Offirmo

+0

@Basile Starynkevitch - +1 za wzmiankę o -Wall, niezbędna dla wszystkich buildów. –

+0

Nigdy nie słyszałem o MELT, wygląda bardzo interesujące, dzięki! – Offirmo

4

Znam dwóch alternatyw:

Oba mogą zastąpić markę, bo są szybsze dla dużych projektów, ponieważ nie robią tak rozległe kontrole.

+0

+1 Bardzo interesujące, dzięki. "Make vs Tup" wygląda obiecująco. Czy używasz go sam? Teraz potrzebujemy generatora tup dla cmake. Widzę, że są pewne wysiłki w tym kierunku. – Offirmo

+0

@Offirmo Mój kolega pracuje, aby przejść od wersji make do tup, a on wspomniał o 30% poprawie. –

1

Aby wymienić część zróbka zestawu narzędzi, polecam waf, która jest szybka i ma niewielki rozmiar. Wsparcie też jest całkiem dobre.

Próbowałem złota, które nie było tak szybkie niż na początku, ale wydaje się obiecujące. Wygląda na to, że nie jest tak naprawdę naprawiony, ale ostatnio sprawdziłem.

clang wydaje się dość obiecujący, ale nie próbowałem go w projekcie produkcyjnym. Planuję, ponieważ jego przemyślany projekt prowadzi do naprawdę szybkiego rozwoju. Mam zamiar używać go, aby przejść do C++ 11 ^^

my2c

+1

Złoto jest utrzymywane, ale w praktyce jest dość dojrzałe. Google aktywnie interesuje się złotem. –

+1

Obecnie GCC 4.6 wydaje się mieć nieco lepszą obsługę C++ 11 niż clang 3.0 –

+0

Obecnie używam LLVM GCC (w zasadzie clang) na OSXie w tej chwili i uważam, że jest naprawdę szybki do kompilacji i ogólnego rozwoju. W XCode clang nieustannie buduje tablice symboli w tle, co sprawia, że ​​uzupełnianie kodu jest responsywne i świadome kontekstowo i jak wspomniano wcześniej, skraca czas kompilacji/kompilacji. –

Powiązane problemy