UWAGA: poniższe dane zaczęrpnięto ze strony Pana Janusza Garnczarskiego dostępnej pod adresem: http://januszg.hg.pl

Zestawienie darmowych kompilatorów języka c++


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:

  • GNU Pascal Compiler (GPC)
  • Mercury
  • Cobol For GCC (w trakcie implementacji)
  • Fortran G95 (w trakcie implementacji)
  • GNU Modula-2 (w trakcie implementacji)
  • Modula-3 (patrz: http://www.m3.org)

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:

  • biblioteki Cygwin DLL (cygwin1.dll) zawierającej emulację interfejsu POSIX systemu UNIX
  • kolekcji narzędzi przeniesionych z systemu UNIX/Linux

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.

Środowisko Cygwin zawiera następujące pakiety:

  • ash - Bourne Shell (/bin/sh)
  • autoconf Wrapper scripts for autoconf-devel and autoconf-stable
  • autoconf-devel Development version of the automatic configure script builder
  • autoconf-stable Stable version of the automatic configure script builder
  • automake Wrapper scripts for automake-devel and automake-stable
  • automake-devel Development version of a tool for generating GNU-compliant Makefiles
  • automake-stable Stable version of a tool for generating GNU-compliant Makefiles
  • bash - GNU Bourne Again SHell
  • bc The GNU numeric processing language (bc) and reverse polish calculator (dc)
  • binutils - GNU assembler, linker and binary utilities
  • bison - generator parserów zgodny z YACC
  • byacc The Berkeley LALR parser generator
  • bzip2 A high-quality block-sorting file compressor
  • clear Clears the screen
  • compface Conversion utilitities for face graphics
  • cpio GNU cpio -- a program to manage archives of files
  • cron Management of regular background processing
  • crypt - narzędzie i biblioteka do kodowania/dekodowania
  • ctags A C programming language indexing and/or cross-reference tool
  • curl A client that groks URLs
  • cvs - Concurrent Version System
  • cygrunsrv NT/W2K service initiator
  • cygutils A collection of simple utilities
  • cygwin The UNIX emulation engine
  • dejagnu Framework for running test suites on software tools
  • diff - narzędzie do porównywania zawartości plików
  • ed The GNU version of the original UNIX line editor
  • expect A program that 'talks' to other programs
  • figlet Program to create large letters on text screen
  • file Determines file type using 'magic' numbers
  • fileutils GNU file management utilities
  • findutils Utilities for finding files--find, xargs, and locate
  • flex A fast lexical analyzer generator
  • fortune Print a random, hopefully interesting, adage
  • gawk GNU awk, a pattern scanning and processing language
  • gcc - komilator języków: C, C++ i Fortran
  • gdb - GNU Debugger
  • gdbm GNU dbm database routines (runtime version)
  • gettext GNU Internationalization utilities
  • ghostscript - interpreter języka Postscript (wersja GNU)
  • gperf Perfect hash function generator
  • grep - GNU grep, egrep i fgrep
  • groff GNU troff text-formatting system
  • gzip The GNU compression utility
  • indent A C language source code beautifier
  • inetutils Common networking utilities and servers
  • irc An Internet Relay Chat (IRC) client
  • jbigkit Lossless image compression library
  • jpeg A library for manipulating JPEG image format files
  • keychain An OpenSSH key manager
  • less A file pager program, similar to more(1)
  • libintl GNU Internationalization runtime library
  • libintl1 GNU Internationalization runtime library
  • libncurses5 Compatibility libraries for terminal handling (runtime)
  • libncurses6 Current libraries for terminal handling (runtime)
  • libpng PNG library - development
  • libpng2 PNG library - 1.0.x runtime
  • libreadline4 GNU readline and history libraries (runtime)
  • libreadline5 GNU readline and history libraries (runtime)
  • libtool Wrapper scripts for libtool-devel and libtool-stable
  • libtool-devel A shared library generation tool
  • libtool-stable A shared library generation tool
  • libxml2 Libxml is the XML C library developped for the Gnome project.
  • libxslt Libxslt is the XSLT C library developped for the Gnome project.
  • links Text mode web browser
  • login Sign on to a system
  • lynx - przeglądarka WWW pracująca w trybie tekstowym
  • m4 A macro processing language
  • make The GNU version of the 'make' utility
  • man Man, apropos and whatis
  • mingw-runtime - biblioteka runtime od pakietu MinGW
  • mktemp Allows safe temp file/dir creation from shell scripts
  • mt Magnetic Tape manipulation utility
  • mutt A text mode mail user agent
  • nano A pico clone text editor with extensions
  • ncftp An improved FTP client
  • ncurses Libraries for terminal handling (main package)
  • newlib-man Man pages for some system functions
  • opengl - biblioteka OpenGL
  • openssh The OpenSSH server and client programs
  • openssl The OpenSSL runtime environment
  • openssl-devel The OpenSSL development environment
  • patch Apply a diff file to an original
  • pcre Perl Compatible regular expression library
  • perl Larry Wall's Practical Extracting and Report Language
  • pkgconfig A utility used to retrieve information about installed libraries
  • popt - biblioteka do Library for parsing cmdline parameters
  • postgresql - Relacyjna baza danych PostgreSQL
  • python An interactive object-oriented scripting language
  • rcs - Revision Control System (RCS)
  • readline GNU readline and history libraries
  • regex POSIX compliant regular expression library
  • robots Robots - fight against maniac robots
  • rsync Fast remote file transfer program (can use existing data to minimize transfer)
  • rxvt VT102 terminal emulator for X and Windows
  • sed The GNU sed stream editor
  • sh-utils A set of GNU utilities commonly used in shell scripts
  • sharutils The GNU shar utilities including uuencode/uudecode.
  • shutdown Shutdown, reboot, hibernate or suspend the machine
  • squid Internet Object Cache (WWW proxy cache)
  • ssmtp A minimal mail-transfer agent which forwards mail to an SMTP server
  • tar - GNU tar
  • tcltk - biblioteki TCL/Tk 8.0
  • tcsh TENEX C Shell, an enhanced version of Berkeley csh
  • termcap Compatibility package for old termcap-based programs
  • terminfo Database for ncurses-style terminal handling
  • tetex-beta The TeX text formatting system
  • texinfo Documentation system for on-line information and printed output
  • texmf The TeX text formatting system (install helper)
  • texmf-base The TeX text formatting system (basic libraries)
  • texmf-doc The TeX text formatting system (documentation)
  • texmf-extra The TeX text formatting system (extra libraries)
  • texmf-tiny The TeX text formatting system (tiny libraries subset)
  • textutils The GNU text file processing utilities
  • tiff A library of functions for manipulating TIFF format image files
  • time The GNU time command
  • ttcp Popular network benchmarking tool
  • units Converts between different systems of units.
  • unzip - narzędzie do dekompresji plików zip
  • vim Vi IMproved - enhanced vi editor
  • w32api Win32 API header and library import files
  • wget Utility to retrieve files from the WWW via HTTP and FTP
  • which Displays where a particular program in your path is located
  • whois - GNU Whois
  • xpm-nox X11 pixmap library -- no X required
  • zip A file compression and packaging utility compatible with PKZIP
  • zlib - biblioteka do kompresji/dekompresji (The zlib compression and decompression library)

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:

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:

  • krokowe wykonywanie programu
  • wybór funkcji
  • wybór pliku źródłowego
  • cztery tryby prezentacji programu: źródło, asembler, asembler + źródło, asembler i źródło w oddzielnych oknach
  • instrukcje asemblera w stylu Intel lub ATT
  • podgląd zawartości: stosu, rejestrów, pamięci, wybranych zmiennych, zmiennych lokalnych funkcji, procesów (wątków),
  • ustawianie punktów przerwania wykonywania programu (ang. breakpoint)
  • dostęp do tzw. konsoli GDB umożliwiającej wykonywanie poleceń z GDB
Wygląd głównego okna programu poczas pracy przedstawia rysunek:

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:

  • extract.exe.gz - (wymagalny, plik uzywany przez skrypt instalacyjny)
  • startup-scripts.tgz (wymagalny, przykładowe sktypty startowe X Serwera i klientów)
  • Xbin.tgz (wymagalny, programy: xterm, twm, itp.)
  • Xdoc.tgz (wymagalny, dokumentacja)
  • Xetc.tgz (wymagalny, pliki konfiguracyjne X Serwera i programów zawartych w Xbin.tgz)
  • Xf100.tgz (opcjonalny, czcionki 100 dpi)
  • Xfcyr.tgz (opcjonalny, czionki Cyrilica)
  • Xfenc.tgz (wymagalny, dane o czcionkach tzw. font encodings)
  • Xfnts.tgz (wymagalny, czcionki 75 dpi)
  • Xfscl.tgz (opcjonalny czionki scalowalne Speedo i Type1)
  • Xfsrv.tgz (opcjonalny, X Font Serwer)
  • Xhtml.tgz (opcjonalny, dokumentacja w formacie HTML)
  • Xinstall.sh (wymagalny, skrypt instalacyjny XFree86)
  • Xjdoc.tgz (opcjonalny, dokumentacja XFree86 w języku japońskim)
  • Xlib.tgz (wymagalny, plikz z katalogu X11R6/lib/)
  • Xman.tgz (wymagalny, pliki pomocy man)
  • Xnest.tgz (opcjonalny, program Xnest)
  • Xprog.tgz (opcjonalny, dodatkowe pliki wymagalne przy kompilacji programów dla Cygwin/XFree86)
  • Xprt.tgz (opcjonalny, X Print Serwer)
  • Xps.tgz (opcjonalny, dokumentacja w formacie Postscript)
  • Xvfb.tgz (opcjonalny, X Virtual Frame Buffer serwer)
  • Xxserv.tgz (wymagalny, Cygwin/XFree86 X Serwer)

Ś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:

  • gcc-2.95.3-20010828
  • binutils-2.11.90-20010915
  • mingw-runtime-1.1
  • w32api-1.1
  • make-3.79.1-20010722
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:

  • wsparcie dla kompilatora MinGW (dostępnego w pakiecie) oraz Cygwin
  • debugowanie przy użyciu GDB uruchamianego z linii poleceń, możliwe jest także użycie programu Insight
  • zarządzanie projektem
  • konfigurowalny edytor z podświetlaniem składni
  • generatory do tworzenia aplikacji GUI, konsolowych oraz bibliotek dynamicznych (*.dll)
  • generator plików makefile
  • generator programów instalacyjnych
  • edytor i kompilator plików zasobów
  • pliki pomocy z opisem m.in. biblioteki STL oraz debugera GDB
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.

Ś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:

  • RHIDE - tekstowe IDE wzorowane na środowisku Borland C++ 3.1, wbudowany debugger, system pomocy, kolorowanie składni itp.
  • Allegro - znakomita, wieloplatformowa (DOS, Unix - Linux, FreeBSD, Irix, Solaris, Windows, QNX, BeOS) biblioteka do programowania gier. (patrz: http://www.talula.demon.co.uk/allegro/).
  • RSXNTDJ - pakiet umożliwiający kompilację programów pod WIN32 przy użyciu DJGPP.
  • GRX - wieloplatformowa (DOS - DJGPP, Turbo C, Borland C++, Watcom C++, Linux, Solaris) biblioteka graficzna.
  • Turbo Vision - znana biblioteka firmy Borland do obsługi interfejsu użytkownika w trybie tekstowym.
  • JPTUI - rozbudowana biblioteka do obsługi interfejsu użytkownika w trybie tekstowym.
  • SWORD Windowing system - biblioteka GUI pracująca w trybie graficznym.

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:

  • RSXNT - narzędzia do tworzenia aplikacji dla środowiska Win95, WinNT oraz Win 3.1 + Win32s wykorzystujące kompilator EMX czyli GCC przeniesiony do systemu OS/2 (patrz: ftp://ftp.leo.org/pub/comp/os/os2/leo/gnu/emx+gcc).
  • RSXNTDJ - narzędzia do tworzenia aplikacji dla środowiska Win9x i WinNT/2000 wykorzystujące DJGPP w wersji 2.x.
  • RSXIDE - zintegrowane środowisko programistyczne obsługujące kompilator GNU C/C++ działające na platformie WIN32.
  • RSX - 32 bitowy ekstender DPMI umożliwiający wykonywanie 32-bitowych programów skompilowanych przy użyciu kompilatora EMX w środowiskach: DOS, Win 95 i Win NT.
  • RSXWIN - biblioteka uruchomieniowa umożliwiająca wykonywanie 32-bitowych programów skompilowanych przy użyciu kompilatora EMX w środowiskach: Win 3.1, Win 95, Win NT i WinOS/2.

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.

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).

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.:

  • edytor z kolorowanie składni,
  • wbudowany debugger,
  • generator szablonowych programów,
  • generator plików makefile,
  • obsługę projektów,
  • wbudowany profiler,
  • wielofunkcyjny analizator tekstu źródłowego programu (m.in. drzewo i statystyka funkcji, generator prototypów, reformatowanie - program Indent)
  • wbudowany edytor binarny,
  • narzędzie do porównywania zawartości plików (Diff Utility).

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.

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:

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 posiada m.in. następujące możliwości:

  • szacowanie wyrażeń w językach C/C++ i assembler
  • obsługa wyjątków w językach C/C++
  • sterowanie przebiegiem programu
  • niskopoziomowy dostęp do rejestrów procesora i pamięci systemu
  • przeglądanie danych
  • ustawianie punktów zatrzymania
  • śledzenie komunikatów systemowych

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.

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).


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:

  • Digital Mars C/C++ Compiler Version 8.27 (dm827c.zip)
    • kompilator C i C++
    • linker
    • biblioteki
    • pliki nagłówkowe, w tym WIN32 API
    • biblioteka Runtime
    • SGI Standard Template Library 3.3
    • MicroEmacs dla WIN32
  • Biblioteki DOS 16 (dm825dos.zip)
    • biblioteki Runtime
    • konwerter exe2bin.exe
    • MicroEmacs dla DOS
  • biblioteki DOS Extendera Version 8.1B5 (dm825x.zip)
  • Narzędzia (dm812util.zip)
    • obj2asm.exe - konwerter plików *.obj do *.asm
    • dumpobj.exe - zawartość pliku *.obj
    • dump.exe - zawartość dowolnego pliku
    • dumpexe.exe - zawartość plików wykonywalnych i bibliotek DLL
    • implib.exe - tworzenie bibliotek importowych
    • rcc.exe - kompilator zasobów
    • smake.exe - make
    • coff2omf.exe - konwerter plików w formacie COFF na format OMF
    • cl.exe - konwerter plików Microsoft CL na Digital Mars SC
    • makedep.exe - generator plików Makefile
    • libunres.exe - program do wykrywania nieużywanych symboli w bibliotekach
  • Garbage Collector (dmgc60a8.zip) - biblioteka do zarządzania pamięcią w programamch w C i C++ autorstwa Hansa Boehma, zawiera bibliotekę DLL, bibliotekę importową, plik nagłówkowy gc.h oraz pełny tekst źródłowy.

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

  • STL firmy Hewlett Packard
  • STL firmy Silicon Graphic International (wersja 3.20)
  • STLport (wersja 4.0)
  • MFC wersja 4.21
  • ATL wersja 2.02

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

  • Compiler and Tools Guide
  • Run-Time Library Reference
  • User's Guide and Reference

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

  • środowisko IDE z debuggerem
  • dokumentację w formacie HTML
  • tutoriale i programy przykładowe
  • teksty źródłowe bibliotek
  • optymalizator

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 do tworzenia i edycji poszczególnych rodzajów zasobów korzysta z oddzielnych programów:

  • Watcom Dialog Editor - okienka dialogowe
  • Watcom Menu Editor - menu
  • Watcom Image Editor - pliki graficzne

Do tworzenia programów przydatne może okazać się środowisko Watcom IDE 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:

  • Watcom C Language Reference, stron 297
  • Watcom C Library Reference Volume 1, stron 601
  • Watcom C Library Reference Volume 2, stron 667
  • Watcom C++ Class Library Reference, stron 976
  • Watcom C/C++ Programmer's Guide, stron 401
  • Watcom C/C++ Getting Started, stron 99
  • Watcom C/C++ Tools User's Guide, stron 165
  • Watcom C/C++ User's Guide, stron 674
  • Watcom Debugger User's Guide, stron 238
  • Watcom Graphical Tools User's Guide, stron 496
  • Watcom Linker User's Guide, stron 251

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:

  • ccc-6.4.9.005-1.alpha.rpm - kompilator (5 MB)
  • libots-2.2.7-2.alpha.rpm - biblioteki niezbędne do działania kompilatora (96 KB)
  • cpml_ev5-5.1.0-4.alpha.rpm - biblioteka CPML (ang. Compaq Portable Math Library) w wersji na dowolny procesor Alpha (320 KB)
  • cpml_ev6-5.1.0-4.alpha.rpm - biblioteka CPML (ang. Compaq Portable Math Library) w wersji na procesor Alpha EV6 (21264) lub nowszy (320 KB)
  • ladebug-4.0.65-19.alpha.rpm - debuger (2 MB)

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ń.

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ć.