Darmowe kompilatory języków C/C++ (w budowie)


Strona główna | Autor | Borland C++ 5.5 | GUI | Książki | OpenGL | Programy | Projekty | Teksty


Wstęp

Języki C i C++ to obecnie jedne z najbardziej popularnych języków programowania wysokiego poziomu. Programista decydując się na wybór któregoś z tych języków ma szeroką ofertę narzędzi programistycznych, zarówno komercyjnych jak i darmowych. W niniejszym artykule przedstawiamy wybrane kompilatory języków C i C++ dostępne bezpłatnie. Pomimo tej wspólnej cechy przedstawone programy róźnią się zasadami licencji, i pn. nie w każdym przypadku możliwe jest ich komercyjne wykorzystanie.

Prezentowane narzędzia można podzielić na trzy grupy. Do pierwszej zaliczają się kompilatory mające swój rodowód w projekcie GCC (ang. GNU Compiler Collection). Dostępność kodu źródłowego oraz licencja GNU spowodowała ekspansję GCC na wiele platform. Oprócz systemów takich jak Linux, GCC dostępny jest dla takich platform jak DOS (DJGPP), WIN32 (Cygwin, MinGW), OS/2, Solaris i wiele innych. Aktualnie najpopularniejsza wersja GCC to 2.9.5, ale dostępna jest już stabilna wersja 3.0.x.

Do drugiej grupy można zaliczyć kompilatory mające rodowód komercyjny. Oznacza to, że za darmo dostęna jest okrojona (ale bez utraty zasadniczej funkcjonalności) wersja komercyjnego programu, względnie producent, który zrezygnował z rozwijania swojego produktu udostępna wybrane wersje programu bez opłat. do takich produktów należą m.in.: Borland C++ Compiler 5.5, LCC-Win32, Digital Mars, Open Watcom 11C czy Intel C++ Compiler for Linux. W każdym przypadku należy dokładnie zapoznać się z treścią licencji, nie zawsze możliwe jest wykorzystanie komercyjne czy nawet publikacja programów niekomercyjnych.

Ostatnia grupa prezentowanych narzędzi, to małe projekty, najczęściej kompilatorów języka C, powstałe z inicjatywy niewielkich grup programistów (czasmami nawet pojedynczych osób), rozprowadzane na różnorodnych warunkach. Zazwyczaj są to projekty już nierozwijane, ale można wśród nich znaleźć kilka interesujących produktów.

Na koniec wstępu jeszcze jedna uwaga. Niniejszy przegląd celowo pomija narzędzia dostępne na mniej popularne systemy operacyjne, mikrokontrolery i inne nietypowe środowiska.


Zestawienie kompilatorów

Kompilator Obsługiwane platformy Języki
WIN32 WIN16 Linux DOS32 DOS16 Solaris OS/2 Mac OS
GCC (GNU Compiler Collection), opis Cygwin, MinGW - + DJGPP - + EMX + C, C++
Cygwin, opis + - - - - - - - C, C++
MinGW, opis + - - - - - - - C, C++
DJGPP, opis - - - + - - - - C, C++
EMX 0.9 - - - + - - + - C, C++
RSX tools for GNU C/C++, opis + - - + - - + - C, C++
Borland C++ Compiler 5.5, opis + - - - - - - - C, C++
Borland Kylix 3 Open Edition, opis - - + - - - - - C, C++
Borland C++Builder 6 Personal + - - - - - - - C, C++
Borland C++BuilderX Personal + - + - - + - - C, C++
Microsoft Visual C++ Toolkit 2003 + - - - - - - - C, C++
LCC-Win32, opis + - - - - - - - C
lcc 4.1, opis LCC-Win32 - + - + + - - C
Digital Mars, opis + + - + + - - - C, C++
Macintosh Programmer's Workshop (MPW), opis - - - - - - - + C, C++
Turbo C 2.01, opis - - - - + - - - C
Turbo C++ 1.01, opis - - - - + - - - C, C++
Pacific C MS-DOS Compiler, opis - - - - + - - - C
Compaq C Version 6.4 for Linux Alpha, opis - - + - - - - - C
Open Watcom 11C, opis + + - + + - + - C, C++
Intel(R) C++ Compiler 6.0 for Linux, opis - - + - - - - - C, C++
ACC, opis - - - + - - - - C
LadSoft CC386 1.90, opis - - - + - - - - C
Small C Compiler 2.2, opis - - - - + - - - C
Tiny C Compiler, opis - - + - - - - - C
Digital Research C for PC-DOS - - - - + - - - C
LSI C-86 - - - - + - - - C
Cyclone + - + - - - - - C
Pelles C for Windows + - - - - - - - C

GCC

GCC (ang. GNU Compiler Collection, poprzednio GNU C Compiler), to w wersji 3.0 kompilatory następujących języków: C, C++, Objective C, Chill, Fortran i Java. W wersji 3.1 ma do nich dołączyć jeszcze języka Ada. GCC jest częścią projektu GNU (ang. GNU's Not Unix), który został zapoczątkowany w 1984 roku w celu stworzenia kompletnego i darmowego systemu operacyjnego UNIX, będącego wolnym oprogramowaniem: systemu GNU. Strona główna GCC znajduje się pod adresem: http://gcc.gnu.org/

GCC jest dostępny na wiele platform systemowych. Poza środowiskiem systemu Linux, do najbardziej znanych wersji tego kompilatora należą opisane dalej: DJGPP (DOS), Cygwin i MinGW (WIN32). Z innych systemów można wymienić jeszcze następujące platformy obsługiwane przez GCC: HP-UX, Digital UNIX, BSD Unix, DGI, FreeBSD, AIX i Solaris. Pełna lista obsługiwanych platworm dostępna jest pod adresem: http://gcc.gnu.org/install/specific.html.

Poza językami wymienionymi wyżej, do GCC przygotowano tzw. Front Ends, obsługujące kolejne języki programowania:

Najnowszą wersją GCC, dostępną podczas powstawania niniejszego tekstu jest 3.0.4, choć w powszechnym użytku jest wersja 2.9.5. Kompilatorowi GCC można poświęcić jeszcze wiele słów ale proponuję bliżej zapoznać się z jego wersjami na inne niż Linux platformy.


Cygwin

Cygwin, dostępny pod adresem http://www.cygwin.com/, to więcej niż sam kompilator GCC przeniesiony na platformę WIN32 przez firmę Red Hat. To kompletne środowisko systemu UNIX, składające się z dwóch części:

Przypomnijmy, że POSIX (ang. Portable Operating System UNIXish), oznacza zespół powołany przez IEEE w celu opracowania standardów określających przenośną wersję systemu UNIX. Ogółem istnieje co najmniej 11 grup standardów POSIX o oznaczeniach od IEEE 1003.0 do IEEE 1003.10. Biblioteka Cygwin DLL jest aktualizowana kilka razy w miesiącu. Pod koniec lutego 2002 roku dostępna była wersja 1.3.10. Tutaj jeszcze jedna ważna uwaga. Programy korzystające z tej biblioteki muszą być udostępniane na podstawie licencji GPL. W przypadku gdzy nie korzystamy z POSIX, można użyć podczas kompilacji opcji -mno-cygwin - plik wykonywalny nie będzie używał cygwin1.dll.

Cygwin posiada wygodny program instalacyjny, który umożliwia instalację (lub aktualizację) pakietu przez Internet z uwzględnieniem wielu mirrorów dostępnych na świecie, jak też tradycyjne z dysku lokalnego.

Cygwin Setup

Rys. Cygwin Setup - wybór pakietów do instalacji

Środowisko Cygwin zawiera następujące pakiety:

Po zainstalowaniu wybranych pakietów można już uruchomić konsolę tekstową i używać dostępnych narzędzi. Wygląd konsoli z komunikatami kompilacji przykładowego programu przedstawia rysunek:

Okno konsoli środowiska Cygwin

Rys. Okno konsoli środowiska Cygwin - kompilacja przykładowego programu

Dla programisty najważniejsze są jednak narzędzia programistyczne. Poza wersją kompilatora GCC oraz szeregu innych narzędzi znanych ze środowiska UNIX/Linux, szczególnie interesującym programem jest Insight Debugger oparty o GDB. Insight możliwościami nie odbiega od komercyjnych produktów:

Wygląd głównego okna programu poczas pracy przedstawia rysunek:
Insight Debugger

Rys. Insight debugger - debugowanie przykładowego programu

Oprócz wyżej wymienionych pakietów, w środowisko WIN32 został także przeniesiony X Serwer dostępny na licencji GNU - XFree86. Poniżej znajduję się krótki opis uruchomienia powyższego X Serwera.

Binaria zawierające XFree86 w wersji 4.20 tworzą następujące pliki:

Ściągnięte pliki umieśćmy w tymczasowym katalogu c:\Cygwin\tmp (c:\Cygwin to domyślny katalog instalacyjny pakietu). Po zalogowaniu się w konsoli trzeba przejść do tego katalogu (cd /tmp) i poleceniem: gunzip extract.exe.gz rozpakować plik extract.exe. Następnie plik ten kopiujemy do katalogu bin (cp extract.exe /bin) i uruchamiamy skrypt Xinstall.sh, który wykonuje instalację pakietów. Po zakończeniu instalacji do katalogu /usr/X11R6/bin kopiujemy plik startup-scripts.tgz (cp startup-scripts.tgz /usr/X11R6/bin) i następne go dekompresujemy (cd /usr/X11R6/bin tar -xzf startup-scripts.tgz). W ten sposób instalacja XFree86 została zakończona. Cały proces instalacji jest dokładnie opisany na stronie WWW oraz w plikach formatu: TXT, HTML, PDF i RTF. X Serwer uruchamiamy poleceniem startxwin.bat.

Cygwin to zestaw narzędzi niezbędnych w przypadku przenoszenia oprogramowania z systemów UXIX/Linux. Dostepność X Serwera potencjalnie jeszcze te możliwości poszerza. A przy tych wszystkich zaletach otrzymujemy pełnowartościowy zestaw narzędzi do programowania w środowisku WIN32, ze sprawdzonym kompilatorem GCC na czele.

Warto zobaczyć:


MinGW

MinGW czyli Minimalist GNU For Windows dostępny pod adresem: http://www.mingw.org/, jest jedną z wersji kompilatora GCC przeznaczoną dla systemów z rodziny Microsoft Windows. Od Cygwina różni się przede wszystkim brakiem emulacji POSIX (biblioteka cygwin1.dll). Stąd właśnie w nazwie słowo Minimalist.

W czasie powstawania niniejszego tekstu dostępna była wersja 1.1 pakietu MinGW, zawierająca następujące składniki:

Najnowszą wersję kompilatora i poszczególnych pakietów można pobrać ze strony http://sourceforge.net/project/showfiles.php?group_id=2435

Biblioteka uruchomieniowa (MinGW basic runtime system) posiada status public domain i zawiera pliki nagłówkowe i biblioteczne (m.in. stdio.h, libmingw32.a) oraz biblioteki importowe dla CRTDLL/MSVCRT. Narzędzia zawarte w pakiecie, takie jak kompilator, linker, debuger, make dostępne są na zasadzie licencji GNU General Public License. Poza językami C i C++ MinGW zawiera kompilator Fortranu.

Jak przystało na kompilator generujący programy dla platformy WIN32, MinGW posiada zbiór odpowiednich plików nagłówkowych oraz bibliotek importowych. Tworzone przez kompilator programy wykonywalne używają biblioteki msvcrt.dll, dostępnej (poza Windows 95 Release 1) w każdej wersji systemu Windows. Ponadto do pakietu dołączona jest biblioteka STL zaimplementowana przez firmę Silicon Graphics Computer Systems.

Wysoka sprawność kompilatora GCC, połączona z dostępnością dodatkowych narzędzi takich jak zintegrowane środowiska programistyczne, czynią z MinGW interesującą propozycję. Szczególnie warto zwrócić na MinGW uwagę, wówczas gdy nie potrzebujemy całej grupy narzędzi przeniesionych z systemu UNIX/Linux i dostepnych razem z pakietem Cygwin.

MinGW zawiera wyłącznie narzędzia tekstowe uruchamiane z linii komend. Popularność pakietu spowodowała powstanie dodatkowych narzędzi programistycznych, w tym także zintegrowanych środowisk programistycznych. Chyba najbardziej rozbudowanym i popularnym narzędziem tego typu jest Bloodshed Dev-C++ (licencja GNU GPL), dostępny pod adresem: http://www.bloodshed.net. Ostatnia stabilna wersja to 4.01 (patrz rysunek), która posiada następujące możliwości:

Bloodshed Dev C++ Version 4

Rys. Bloodshed Dev C++ Version 4 - edycja przykładowego projektu

Bloodshed Dev-C++ to dobre środowisko do edycji i zarządzania projektami. Co prawda dostępny debuger GDB nie jest programem łatwym w użyciu ale możliwe jest zastosowanie bardzo wygodnego Insighta. Ważną cechą jest także możliwość stosowania Cygwina jako kompilatora, zamiast domyślnego MinGW.

W marcu 2002 roku pojawiła się wersja 5.0 środowiska Bloodshed Dev C++. Na razie dostępna jest tylko wersja Beta 4.9.1.0 (patrz rysunek). Podstawową zmianą w stosunku do wersji 4 jest zintegrowanie ze środowiskiem debuggera, opartego oczywiście o GDB. Inną praktyczną zmianą jest rezygnacja z interfejsu MDI na rzecz zakładek, w których otwierane są poszczególne plik źródłowe projektu. Testowana wersja Beta posiada jeszcze błędy i często kończy pracę właśnie podczas debugowania programu, ale błędy powinny zostać usunięte w wersji ostatecznej.

Bloodshed Dev C++ Version 5

Rys. Bloodshed Dev C++ Version 5 - krokowe wykonywanie przykładowego programu

Środowisko Dev C++ tworzone jest w Borland Delphi 6.0. Istnieje także Dev C++ for Linux, napisany oczywiście w Borland Kylix, aktualnie dostępny w wersji 0.7.0 Beta. Dev C++ to najbardziej zaawansowane środowisko programistyczne wykorzystujące kompilator MinGW. Zmiany dokonane w wersji 5 tylko umacniają pozycję lidera. Zdecydowanie warto wypróbować ten program.

Warto zobaczyć:


DJGPP

DJGPP (akronim od DJ's GNU Programming Platform), to szereg narzędzi GNU przeniesionych do środowiska MS-DOS. Programy generowane przez DJGPP pracują w 32-bitowym trybie chronionym procesorów x86. Razem z pakietem udostępniany jest darmowy 32-bitowy serwer DPMI, obsługujący 4 GB płaską przestrzeń adresową oraz 512 MB pamięci wirtualnej. DJGPP zawiera także implementację interfejsu POSIX. Aktualnie dostępna jest wersja 2.0 pakietu. DJGPP jest na bieżąco aktualizowany, w szczególności dotyczy to podstawowych narzędzi GNU tj. GCC i GDB.

Intalacja programów nie jest wspomagana żadnym dodatkowym oprogramowaniem. Wybrane pakiety należy rozpakować do katalogu (np. C:\DJGPP), a plik autoexec.bat uzupełnić o następujące wpisy:

set PATH=C:\DJGPP\BIN;%PATH%
set DJGPP=c:/djgpp/djgpp.env

Poza typowymi narzędziami GNU, znanymi z systemu UNIX/Linux, DJGPP zawiera kilka innych interesujących, z punktu widzenia programisty, programów i bibliotek:

DJGPP to najlepszy kompilator języków C/C++ (i innych obsługiwanych przez GCC) dostępny w środowisku DOS. Jedynie w przypadku potrzeby przygotowania programu działającego w innym trybie niż 32-bitowe DPMI koniecznością staje się szukanie innego pakietu.

Warto zobaczyć:


RSX tools for GNU C/C++

RSX tools for GNU C/C++ to zbiór na tyle interesujących narzędzi korzystających z kompilatora GCC w wersji pod DOS i OS/2, iż warto je omówić odrębnie. Nie jest to jednak kolejna wersja GCC. Pakiet składa się z następujących narzędzi:

Wymienione narzędzia dostępne są na licencji GNU GPL. Jak widać z krótkiego opisu pakiet RSX tools for GNU C/C++ może okazać się przydatny przy tworzeniu oprogramowania działającego w systemach Windows.


Turbo C++ version 1.01

Turbo C++ version 1.01 to pierwszy kompilator języka C++ wyprodukowany przez firmę Borland. Kompilator pojawił się w sprzedaży 28 lutego 1991 roku. Obsługuje standard ANSI C oraz specyfikację języka C++ AT&T w wersji 2.0. Pakiet zawiera w pełni zintegrowane środowisko programistyczne: edytor, kompilator, linker i debugger (patrz rysunek). Oczywiście generowany jest kod wykonywalny dla systemu DOS.

Turbo C++ version 1.01

Rys. Turbo C++ version 1.01 - edycja przykładowego programu

W kwietniu 2000 roku Turbo C++ version 1.01 został umieszczony w muzeum produktów firmy Borland. Plik tcpp101.zip ma rozmiar 2,7 MB. Program rozprowadzany jest bez opłat ale jedynie do użytku osobistego (for personal use only). Biorąc pod uwagę czas powstania kompilatora oraz jego możliwości jest to obecnie ciekawostka i lekcja historii dla młodych adeptów sztuki programowania.


Turbo C version 2.01

Turbo C version 2.01 to kolejny kompilator dostępny od 15 lutego 2000 w muzeum produktów firmy Borland. Program pojawił się w sprzedaży 11 maja 1989 roku i zawierał w pełni zintegrowane środowisko programistyczne: edytor, kompilator, linker i debugger (patrz rysunek).

Turbo C version 2.01

Rys. Turbo C version 2.01 - edycja przykładowego programu

Plik tc201.zip ma zaledwie 1,1 MB objętości! Podobnie jak w przypadku Turbo C++ version 1.01 program rozprowadzany jest bez opłat ale jedynie do użytku osobistego (for personal use only). Turbo C version 2.01 to jeszcze jedna ciekawostka i pouczająca lekcja historii dla młodych programistów.


LCC-Win32

LCC-Win32 jest jednym z produktów oferowanych przez firmę: Q Software Solutions GmbH. Autorami samego kompilatora są: Christopher Fraser i David Hanson. Natomiast Jacob Navia opracował szereg rozszerzeń do kompilatora oraz jest autorem szeregu programów dodatkowych tj. edytor, kompilator zasobów, debugger itp. W pakiecie dostępny jest także kompilator języka FORTRAN. Darmowa część pakietu LCC-Win32 obejmuje kompilator, asembler, linker, kompilator zasobów, zintegrowane środowisko programistyczne (IDE) oraz dokumentację w formacie Word DOC i HTML Help (CHM). Za dodatkową opłatą można nabyć m.in. teksty źródłowe kompilatora, IDE oraz bibliotek.

Z serwera FTP można pobrać m.in. następujące pliki:

Serwer FTP warto często odwiedzać, bowiem poprawione wersje kompilatora pojawiają się nawet co kilka dni.

Popatrzmy na możliwości narzędzi jakie posiada pakiet LCC-Win32. Zintegrowane środowisko programistyczne Wedit Win32 Version 3.3 zawiera m.in.:

Wedit Win32 Version 3.3

Rys. Wedit Win32 Version 3.3 - krokowe wykonywanie przykładowego programu

Kolejnym narzędziem niezbędnym w tworzeniu oprogramowania w systemie Windows jest edytor plików zasobów. LCC-Win32 także zawiera taki edytor, nazwany: Wedit Resource Editor, ostatnia wersja 2.78 z 2000 roku. Edytor ten umożliwia dość wygodne projektowanie okienk dialogowych i innych zasobów. Wygląd edytora w trakcie pracy nad przykładowym okienkiem przedstawia rysunek.

Wedit resource editor

Rys. Wedit resource editor - projektowanie przykładowego okienka dialogowego

Przydatnym uzupłenieniem powyższych narzędzi jest Image Editor pozwalający na edycję plików BMP, ICO i CUR. Program posiada podstawowe funkcje narzędzi malarskich, wystarczające do zaprojektowania prostej ikony czy kursora. Oto Image Editor z wczytanym przykładowym kursorem:

Image Editor

Rys. Image Editor - edycja przykładowego kursora

Oczywiście LCC-Win32 zawiera także programy uruchamiane z linii komend, w tym kompilator, linker, make, kompilator zasobów i generator bibliotek importowych. Linker używa bibliotek w formacie COFF.

Interesującą cechą LCC-Win32 są rozszerzenia języka, wykraczające poza standard ANSI C. Autorzy zaimplementowanli m.in. przeciążanie operatorów i referencje (zgodnie z C++). Ciekawostką jest biblioteka iostream z obsługą operatora <<.

Dla programistów języka C piszących pod Windows, pakiet LCC-Win32 to bardzo interesująca propozycja. Dostępność zintegrowanego środowiska programistycznego, i dokumentacji ułatwia tworzenie oprogramowania. Niektórzy mogą uznać za wadę obsługę jedynie języka C, ale trzeba w tym miejscu przypomnieć, iż całe API Windows napisane jest właśnie w tym języku.


Lcc 4.1

Lcc - A Retargetable Compiler for ANSI C autorstwa Christophera Frasera i Davida Hansona generuje w wersji 4.1 kod na platformy: ALPHA (DEC OSF/1), SPARC (Solaris), MIPS R3000 (SGI Irix) i X86 (Windows 95/98/NT i Linux). Zbieżność nazwy z kompilatorem LCC-Win32 nie jest przypadkowa, pakiet ten stanowi rozwinięcie Lcc. Budowa i kod źródłowy Lcc w wersji 3.6 został szczegółowo opisany w książce: A Retargetable C Compiler: Design and Implementation (Addison-Wesley, 1995, ISBN 0-8053-1670-1).

Lcc nie zawiera kompletu narzędzi do generacji kodu wykonywalnego. Np. wersja pod Windows jest przystosowana do pracy Microsoft Visual C++ 5.0 oraz MASM 6.11d. Lcc korzysta z plików nagłówkowych i narzędzi Visual C++ oraz asemblera MASM do generowania kodu źródłowego.

Kompilator Lcc trudno określić jako użyteczne narzędzie. Natomiast z cytowaną książką stanowi ciekawy materiał edukacyjny dla zainteresowanych budową i tworzeniem kompilatorów.


Borland C++ Compiler 5.5

Borland C++ Compiler 5.5 jest 32-bitowym kompilatorem języków C i C++ o dużej zgodności ze standardem ANSI/ISO, generującym kod wykonywalny dla systemów z rodziny Microsoft Windows. Pakiet zawiera bibliotekę STL autorstwa firmy Rogue Wave. Borland udostępnił ten kompilator całkowicie nieodpłatnie, licencja nie zabrania także użytku komercyjnego. Pakiet można pobrać ze strony firmy Borland (http://www.borland.com) lub jej polskiego przedstawiciela, firmy BSC Polska (http://www.borland.pl).

Sam kompilator jest dokładnie taki sam jaki zawarty w Borland C++ Builder 5.0. Ale niestety w udostępnionym pakiecie nie ma zintegrowanego środowiska programistycznego, dostępne są wyłącznie narzędzia uruchamiane z linii poleceń, w tym oczywiście kompilator (bcc32.exe), linker (ilink32.exe), kompilator zasobów (brc32.exe), konwerter bibliotek statycznych z formatu COFF (coff2omf.exe) i kilka innych. Borland opublikował dwie poprawki do pakietu, które koniecznie należy zainstalować. Daje to w efekcie wersję 5.5.1 kompilatora.

Możliwości pakietu C++ Compiler 5.5 uzupełnia Turbo Debugger 5.5. Program pracuje w trybie tekstowym, a jego interfejs korzysta ze znanej biblioteki Turbo Vision (patrz rysunek).

Turbo Debugger 5.5

Rys. Turbo Debugger 5.5 - wykonywanie przykładowego programu

Turbo Debugger posiada m.in. następujące możliwości:

Tandem Borland C++ Compiler 5.5 oraz Turbo Debugger 5.5 to znakomity wkład firmy Borland w rozwój darmowego oprogramowania. Do sypozycji jest nowoczesny i szybki 32-bitowy kompilator w połączeniu ze sprawnym debuggerem oraz inne narzędzia dla programistów tworzących oprogramowanie w systemach z rodziny Windows.

Temu kompilatorowi poświęciłem odrębny dział na mojej stronie WWW, do którego zainteresowanych serdecznie zapraszam.

Warto zobaczyć:


Borland Kylix 3 Open Edition (w budowie)

Trzecia wersja Kylixa Open Edition, dostępna pod adresem http://www.borland.com/kylix/open/, doczekała się wreszcie kompilatora języków C i C++. Środowisko wygląda niemal identycznie jak C++ Builder pod Windows (patrz rysunek).

Kylix 3 Open Edition

Rys. Kylix 3 Open Edition - kompilacja przykładowego programu (Linux Mandrake 8.2)


Digital Mars

Digital Mars jak i część innych kompilatorów tutaj opisywanych ma swoje komercyjne korzenie. Jest to bowiem bezpośredni następca kompilatora Symantec C++. Kompilator potrafi generować kod wykonywalny na następujące platformy: WIN32, WIN16, DOS32 (z ekstenderem X32) oraz DOS16.

Do pobrania (najlepiej z serwera ftp://ftp.digitalmars.com) są następujące pakiety:

Ponadto dostępne są następujące biblioteki:

Natomiast w katalogu doc umieszczona została dokumentacja kompilatora Symantec C++ (pliki w formacie PDF):

Za dodatkową opłatą (trzeba przyznć niezbyt wygórowaną) można otrzymać:

Digital Mars to kolejna ciekawa propozycja dla programistów tworzących oprogramowanie działające w systemach DOS i Windows. Szkoda, że za darmo nie jest dostępne IDE oraz debugger, które znacznie przyśpieszają prace nad programem. Nie wpływa to jednak ujemnie na pełną funkcjonalność samego kompilatora jak i dostępnych narzędzi oraz bibliotek.


Macintosh Programmer's Workshop (MPW)

Macintosh Programmer's Workshop (MPW) to zbiór darmowych narzędzi przeznaczonych do tworzenia oprogramowania w językach C, C++ i asembler działającego na systemach Mac OS 7.x/8.x/9.x (procesory Motorola 68k i PowerPC). Dostępny jest także kompilator języka Pascal (tylko procesory Motorola 68k). Pakiet MPW wraz z dokumentacją można pobrać bezpośrednio z serwera FTP, lub zamówić na płycie CD-ROM.

Niewątpliwie atrakcyjny zbiór narzędzi dla programisów starszych wersji Mac OS, w dodatku całkowicie za darmo i z bogatą dokumentacją.


Open Watcom 11C

Kompilator Watcom C/C++, to w latach 90-tych ubiegłego wieku znane i popularne narzędzie programistyczne. Jednak firma Sybase(R) przestała rozwijać kompilator i obecnie oferuje narzędzie RAD o nazwie PowerBuilder(R). Projekt Open Watcom, nad którym pracuje firma SciTech Software oraz wybrana grupa programistów, ma na celu powstanie zestawu przenośnych narzędzi programistycznych, opartych na kompilatorach C/C++ i Fortranu firmy Sybase. Kod źródłowy zostanie udostępniony po usunięciu tych jego części, których właścicielem nie jest firma Sybase.

Na udostępnienie kompletu źródeł trzeba więc jeszcze trochę poczekać, a aktualnie dostępny jest patch 11.0C do ostatniej komercyjnej wersji kompilatora Watcom C/C++ tj. 11.0b (lub 11.0, 11.0a). Dostępny jest także patch do kompilatora Fortranu, którym nie będziemy się dalej zajmować. Popatrzmy co dostajemy za darmo w tej poprawce.

Przy instalacji poprawki do wyboru mamy pakiety przeznaczone dla systemów: DOS16, DOS32, WIN16, WIN32, OS/2 16 i OS/2 32. Niestety, z pakietu usunięto wszystkie pliki licencjonowane przez Microsoft, IBM, Novell, Tenberry, Pharlap i Blue Sky Software, co oznacza m.in. brak Windows SDK, Microsoft Foundation Classes czy ekstendera DOS/4GW. W praktyce uniemożliwia to kompilowanie programów na platformę WIN32 i ogranicza zakres zastosowań do programów pod DOS. Nie lepiej wygląda sprawa zgodności ze standardem języka C++, brakuje np. biblioteki STL.

Pomimo to pakiet zawiera kilka interesujących programów z punktu widzenia programistów tworzących oprogramowanie pod Windows. Przede wszystkim chodzi o Watcom Resource Editor (patrz rysunek) pozwalający na dość wygodne tworzenie plików zasobów.

Watcom Resource Editor

Rys. Watcom Resource Editor - edycja pliku zasobów

Watcom Resource Editor do tworzenia i edycji poszczególnych rodzajów zasobów korzysta z oddzielnych programów:

Watcom Dialog Editor

Rys. Watcom Dialog Editor - edycja okienka dialogowego

Watcom Menu Editor

Rys. Watcom Menu Editor - edycja menu

Watcom Image Editor

Rys. Watcom Image Editor - edycja bitmapy

Do tworzenia programów przydatne może okazać się środowisko Watcom IDE (patrz rysunek)

Watcom IDE

Rys. Watcom IDE - przykładowy projekt

oraz edytor Watcom Windows Editor:
Watcom Windows Editor

Rys. Watcom Windows Editor - edycja pliku

Ponadto pakiet zawiera kilka innych przydatnych narzędzi (wszystkie występują jako oddzielne programy): Watcom Debugger, Watcom Debug Server, Watcom Source Browser, Watcom DDE Spy, Watcom Profiler, Watcom Zoom i Dr. WATCOM.

Na serwerze ftp://ftp.openwatcom.org znajduje się także obszerna dokumentacja w postaci plików PDF:

Na zakończenie można tylko życzyć, aby plany rozwoju projektu Open Watcom zostały jak najszybciej zrealizowane. Kompilator Watcom C/C++ był znany z licznych optymalizacji i wysokiej jakości generowanego kodu. W połączeniu z rozbudowanymi narzędziami i dostępnością pełnego kodu źródłowego, Open Watcom będzie znaczącym wkładem w rozwój idei Open Source.


Compaq C Version 6.4 for Linux Alpha

Compaq C Version 6.4 for Linux Alpha to zaawansowany kompilator języka C przeznaczony dla systemu Linux na platformie Alpha. Po wypełnieniu formularza rejestracyjnego do pobrania są nastepujące pliki:

Dokumentacja dołączona do kompilatora zawiera strony do podręcznika systemowego man oraz podręczniki: Language Reference Manual (format PDF i HTML), Programmers Guide (format PDF i HTML) i Ladebug Debugger Manual (format HTML).

Brak dostępu do odpowiedniego sprzętu uniemożliwia autorowi test opisywanego kompilatora. Ale programistów, którzy pracują pod Linuxem na platformie Alpha nie trzeba zachęcać do testów skuteczności licznych technik optymalizacji kodu wynikowego, oferowaną przez kompilator firmy Compaq.


Pacific C MS-DOS Compiler

Pacific C MS-DOS Compiler to niegdyś sharewarowy produkt australijskiej firmy HI-TECH, aktualnie dostępny na licencji Freeware z prawem do wykorzystania komercyjnego. Instalacja sprowadza się do uruchomienia pliku pacific.exe, który rozpakowuje w bieżącym katalogu wszystkie pliki pakietu. Poza narzędziami uruchamianymi z linii komend, w pakiecie znajduje się dość wygodne IDE (patrz rysunek) ułatwiające programowanie. Niestety dostępny debugger jest narzędziem uruchamianym z linii komend i jego obsługa wymaga poznania szeregu poleceń.

Pacific C IDE

Rys. Pacific C IDE - edycja programu

Jako oddzielny plik dostępna jest dokumentacja kompilatora i innych narzędzi zawartych w pakiecie. Dokumentacja liczy sobie 366 stron (format PDF) i właściwie wyczerpuje temat. Pacific C to ciekawa propozycja dla programujących w systemie DOS - pełnowartościowy kompilator ANSI C wraz z bibliotekami i dodatkowymi narzędziami, obszerna dokumentacja, to walory które warto rozważyć pracując w tym systemie.


Intel(R) C++ Compiler 6.0 for Linux

Kompilator Intel(R) C++ Compiler 6.0 for Linux firma Intel(R) udostępnia bez opłat do użytku niekomercyjnego (patrz tekst licencji). Pakiet można pobrać po uprzedniej rejestracji polegającej na wypełnieniu krótkiej ankiety. Rejestracja ta jest niezbędna, bowiem do uruchomienia kompilator wymaga licencji w postaci elektronicznej czyli pliku przesłanego na podany adres poczty elektronicznej (technologia GlobeTrotter FLEXlm electronic licensing).

Kompilator posiada optymalizację dla najnowszych procesorów firmy Intel(R) wliczając w to 32-bitowe Pentium(R) 4 i Intel(R) Xeon(TM) oraz 64-bitowy Intel(R) Itanium(TM). Wsparcie oznacza także wykorzystywanie przez kompilator wszystkich instrukcji powyższych procesorów, włączając w to np. Streaming SIMD Extensions 2 (SSE2). Oczywiście wspierane są także starsze rozszerzenia np. MMX(TM). Kompilator potrafi także wykorzystywać inne cechy architektury procesorów firmy Intel(R) w celu przyspieszenia działania programu. Razem z kompilatorem Intel(R) udostępnił debugger LDB (The Linux Application Debugger), który pracuje w trybie tekstowym. Jego zestaw poleceń zbliżony jest do GDB, ale oczywiście LDB obsługuje najnowsze zestawy instrukcji procesorów Intela(R).

Oczywiście efektywne wykorzystanie takiego kompilatora możliwe jest dzięki zachowaniu zgodności z bibliotekami i innymi plikami binarnymi generowanych przez kompilator GCC. Wersja 6.0 kompilatora jest nawet zgodna z niektórymi rozszerzeniami standardu ANSI C++ wprowadzonymi w kompilatorze GCC. Umożliwia to stosunkowo łatwe przygotowanie wersji programu korzystającego np. z instrukcji procesora Pentium(R) 4. Możliwe jest także łączenie modułów binarnych (pliki *.o) z programem kompilowanym w GCC.

Intel nie zapomniał także o dokumentacji. Dostępny jest. m.in. 339 stronicowy podręcznik Intel C++ Compiler Users Guide w formacie PDF, zawierający obszerną dokumentację kompilatora. Dostępne są także inne podręczniki w formacie PDF, dokumentacja w plikach HTML oraz moduły dla Linuxowej pomocy man.

Kompilator ma spore wymagania sprzętowe. W przypadku systemów z procesorami IA-32 wymaganym minimum jest Intel(R) Pentium (zalecany Intel(R) Pentium 4), Intel(R) Xeon(TM) lub nowszy, 128 MB pamięci RAM (zalecane 256 MB) oraz 100 MB wolnego miejsca na dysku. Wymagana co do pamięci w systemach z procesorem Itanium są jeszcze większe: 512 MB RAM (zalecane 1 GB). Natomiast wymagania co do systemu obejmują Linux z biblioteką glibc 2.2.2 - 2.2.4 oraz jądrem 2.4. W przypadku systemów z procesorem Itanium(TM) wymagalna jest biblioteka glibc 2.2.3 - 2.2.4 i jądro także w wersji 2.4. Sam kompilator testowany był pod Red Hat 7.1 i 7.2 (obie platformy sprzętowe).

Ten kompilator przeznaczony jest dla osób pragnących wycisnąć ostanie "poty" z procesorów. Warto spróbować i porównać szybkość generowanego kodu przez GCC i kompilator firmy Intel. No koniec trzeba dodać, że najnowsza seria procesorów firmy AMD - Athlon XP także obsługuje rozszerzenia zbioru instrukcji x86 wprowadzone w Pentium 3, w tym SIMD.

Warto zobaczyć:


ACC

ACC autorstwa Davida Ashleya generuje 32 bitowy kod dla trybu chronionego w systemie DOS. Niestety obsługiwany jest jedynie podzbiór języka C - brakuje np. obsługi liczb zmiennoprzecinkowych. Szczegóły dotyczące kompilatora dostępne są w nieobszernej ale wystarczającej dokumentacji. ACC rozpowszechniany jest na licencji Cardware.

Trudno polecić ten kompilator, choćby z uwagi na brak pełnej obsługi standardu ANSI C. Ale aby w pełni ocenić możliwości narzędzia warto zobaczyć przykładowy program napisany przez Autora przy użyciu ACC - dostępny na stronie WWW.


LadSoft CC386 1.90

Kompilator LadSoft CC386 1.90 generuje 32-bitowe programy dla systemu DOS. Wsparcie dla WIN32 jest w w trakcie opracowywamia (wersja Beta). Dodatkowo kompilator potrafi wygenerować kod dla procesorów z serii Motorola 68000. Wszystkie narzędzia uruchamiane są z linii poleceń. Dostępne są pełne teksty źródłowe kompilatora i bibliotek. LadSoft CC386 1.90 przeznaczony jest do celów edukacyjnych, w przypadku zastosowań komercyjnych należy skontaktować się z Davidem Lindauerem - autorem pakietu.

LadSoft CC386 1.90 obsługuje niektóre elementy języka C++ np. parametry funkcji przekazywane przez referencje, domyślne parametry funkcji czy przeładowanie funkcji. Całość możliwości pakietu została opisana w dokumentacji, na którą składa się kilkanaście plików tekstowych w językach angielskim i hiszpańskim.

Warto zapoznać się z LadSoft CC386 1.90 - dzięki dostępności tekstów źródłowych kompilator ma duże walory edukacyjne.


Small C Compiler 2.2

Small C 2.2 autorstwa Jamesa Hendrixa, to kolejny kompilator o edukacyjnym charakterze, został bowiem opisany w książce "A Small C Compiler: Language, Usage, Theory, and Design". Pakiet zawiera kompilator generujący plik w asemblerze oraz assembler. Dostępne są także źródła kompilatora oraz biblioteki standardowej.

Wprawdzie licencja dołączona do kompilatora umożliwia jego komercyjne użycie, ale poważniejsze zastosowania Small C wykluczają liczne braki w implementacji standardu języka C. Przykładowo brak jest wsparcia dla liczb zmiennoprzecinkowych i tablic wielowymiarowych. Elementami tablic nie mogą być wskaźniki, struktury i unie. Pozostałe ograniczenia w stosunku do standardu oraz inne informacje zawiera dokumentacja w postaci plików tekstowych.


Tiny C Compiler

Tiny C Compiler to mały i szybki kompilator języka ANSI C generujący kod na platformę Linux. Poza obsługą standardu ANSI C, TCC obsługuje część rozszerzeń ISO C99 oraz GNU C. Oryginalną cechą kompilatora jest obsługa skryptów pisanych w języku C (pierwsza linia w skrypcie: #!/usr/local/bin/tcc). Kod źródłowy TCC dostępny jest na licencji GNU GPL. Razem ze źródłami dostępna jest dokumentacja w pliku HTML oraz kilka programów przykładowych.

Mały i bardzo szybki kompilator - z pewnością warto wypróbować.


© Janusz Ganczarski
JanuszG@enter.net.pl