My
first programming language was BASIC, the unique available for Sinclair
ZX Spectrum. Then I started studying the Assembler Z80.
When I switched to PC, I discovered the GwBasic and then the QuickBasic.
In each of this different dialects, the graphic was very different,
but always present.
I have been learning programming in C language for many years, at the beginning for
hobby, then at school, applying only to algorithmic functions, mostly
because the C standard libraries miss graphical functions, and also miss
functions for windows and widgets. Recently I promoted a
petition for this.
When Microsoft presented Windows, already with version 1.0, and the
3.1, the QBasic programs used to run in a DOS Box, so I did not bothered about that.
I was a C beginner, and I did not care about the lack of graphics capabilities. C was
developed for system programming, where performance is needed, and graphics is the opposite, always the slow part.
When Windows 95 and WinNT4 were available, and later Linux, I abandoned
completely Basic, focusing on C for power, performances, and for
memory constraint of QuickBasic that worked in "real mode" under DOS.
Immediately later I started to appreciating the best, unique feature of
C: the portability across all architectures, operative system and
microprocessor (x86,
ppc, sparc, alpha, ...) independency. I remember that at that time I
bought a VisualBasic3 student license, but I never installed it.
Working on DOS and WinNT4, I always used the 'djgpp' compiler, a gcc
port for MS-DOS. On Linux gcc is embedded, so, for work reasons, gcc
became my preferred compiler also on other OS, like HP-UX, Solaris,
OSF, VxWorks, etc... but always for the algorithmic and CLI part, I never
dealt with GUI, as I used to develop drivers for VxWorks and Linux in
telecommunication environment.
In recent years, on Windows 2000/XP, I have always used the
Cygwin port of gcc, that is bundled with a complete GNU Posix emulation environment on Win32 platform that natively misses it.
Around 2005 I started to need using graphics, especially for math functions, or simple draws in C language.
Since I was used to compile all of my C applications on any platform, to me
seems too restrictive to learn something which is mono platform.
I found many
graphic libraries, to draw points, lines, mathematical graphs, but for
Unix systems only, otherwise the Microsoft GDI (used by VisualBasic and
VisualC) but for Win32 only.
I was looking for a crossplatform C library for drawing, and to develop
basic GUI widgets. So I started searching the available solutions. Of
course I excluded the GDI and DirectX, since they work on Win32
only. If I learned them, I would have a bad tool, suitable to one
platform only,
useless for my work, and, should Windows disappear in the future,
useless for my personal knowledge too.
In the Unix world two mature solutions exist:
KDE based on
QT library developed by
Trolltech, and
GNOME based on
GTK developed by the
GNU community.
Of both exist the Win32 and MacOS port, but QT requires to release the
source of the developed application or to buy a license for closed source
release. Another valid solution is
WxWidgets,
in open source license on all platforms. I tried to understand which
one was the best for me, which one had best probability to survive and
spread, which one was better.
Looking around I founded that there are many more big notable crossplatform projects (
Mozilla,
Gimp,
Wireshark/Ethereal,
Pidgin/Gaim,
Evolution,
Inkscape,
VMware server,
...) written using GTK+, rather then using the other two libraries,
probably
because GNOME is developed by the GNU community, which consists of many
developers, participants to project management and strategic decisions.
Moreover GTK is C language native, while the other two libraries are
for C++ that I know less. So I
started studying the
GTK tutorial.
After having learned the basis, I needed to try to compile something. A that time on
my home PC I used to run mainly Windows, and only occasionally Linux,
especially when I needed to write code, because of the better support to
developers.
Cygwin was very useful,
adding missing Win32 features. Cygwin is packaged with GTK, so it is
easy to try something. For the first windows tutorial everything worked.
With some more complex applications, developed with the GUI rapid developer
Glade everything worked again, but, again, for my drawing need for points, line, and
mathematical graphs, I had to use the GTK base functions, the GDK.
At that time, the most recent GTK version was 2.8, which, for basic 2D
draw and rendering from GDK, moved to graphical crossplatform library
Cairo. Fortunately I had just met Luca, a colleague of my dear university companion
Marco, who strongly suggested me to learn Cairo to draw points and lines, because GTK and GNOME community were migrating to that.
But until all 2008 Cygwin is packaged with GTK2.6 which is not based on Cairo.
So I needed a method to integrate the most recent GTK version in Cygwin. I searched a
little in Internet, but I could not find any guide for this purpose.
Who works on Linux, finds compiling GTK applications trivial, because
compiler, libraries and generation tools are bundled. But on Windows
nothing is obvious, because the compiler is optional
to buy separately. On the net I found a
guide to compile GTK on Linux and you can found a lot of
guides to compile the last GTK on the other port of gcc, the
MinGW/MSYS,
but nothing for Cygwin. After some attempts, I found the solution to
compile the GTK 2.12 on Cygwin, so here is this guide.
First method, particularly well suited for Unix aware users, as you
have all the tools you are accustomed to use in developing: state of the art editors,
gcc, grep, nm, file, ecc...
HowTo use Cygwin to compile GTK+ v2.8+ and Cairo v1.4+ GUI crossplatform applications
Secondo method, if you are a Win32 only user, probably is
best for you the Dev-C++ method as is an IDE that is so common on this
simple platform.
HowTo use Dev-C++ to compile GTK+ applications
Go to
EFA programming page
Back to main page:
EFA home page