Even een linux programma maken

Voorbereiding

Ik dacht, ik ga even een programma maken in Linux. Omdat ik op de laptop (Windows 7/32bit) een eigen Visual Basic programma heb draaien, dacht ik, dat gaan we in Linux ook eens proberen. Natuurlijk weet ik dat het niet Visual Basic is, dus waag ik me aan C. Een virtuele machine gemaakt op mijn PC met CentOS 6/32 bit (omdat de laptop 32bit is en CentOS 7 alleen 64Bit is) als ontwikkel omgeving. De desktop omgeving  geïnstalleerd omdat het natuurlijk een grafische “venster” moet hebben (Gebruikers Interface).

Software

Even googlen en wat antwoorden gevonden. Glade is een gebruikers interface maker. En Eclipse is om in te programmeren. GTK is de software dat alle Venster handelingen doet. Aan de slag….

Het Venster

Na wat gehannes in Glade een venster gemaakt. In Eclipse via wat code geladen en na een start een bende fouten. In Eclipse een hoop compiler en linker variabelen veranderd en Libraries toegevoegd.Eindelijk compileerde hij en heb ik mijn Venster met de elementen die ik had toegevoegd in Glade. Nou moet ik zeggen, Glade vind ik niet lekker werken. Het is allemaal hokjes werk. Niet zoals Visual Basic dat je een Knop of Tekst label ergens neer kan zetten. Je moet in Glade eerst allemaal hokken en tabellen en weet ik veel wat maken en daarin kun je elementen plaatsen. Het is dus zo dat je niet zo maar een Knop een beetje hoger of lager kan plaatsen.Afijn, na wat spelen in de C code had ik zoveel fouten en ergernis om een woord in een tekst label te wijzigen. Lukte gewoon niet. Dus de boel gewist en met wat anders beginnen. Je kan ook vanuit de C code een venster opbouwen. Dus een voorbeeld gezocht en daar verder meer gegaan. Een raster van 4×5 in een 800×600 pixels venster. Dus 20 hokjes waar ik dingen in kon doen. Alles beter dan niks. Ik vond wat andere voorbeeldjes voor marges en padding van tekst binnen het label en kwam tot de volgende conclusie: GTK versie 3 is daar voor vereist. CentOS 6 heeft GTK 2.24. Daar gingen enkele plannen in duigen. Dan maar wat minder opmaak. Als het maar zichtbaar is van wat ik wil in het venster.

Programmeren in C

Ik heb geen ervaring met programmeren in C. Ik heb een beetje kennis opgedaan met het ontwikkelen van software voor de Arduino. Dat is namelijk ook C. Dus ik dacht, die weg kan ik wel bewandelen. En dat lukt best aardig met hulp van google. Na een aantal dagen had ik functioneel venster gemaakt met de items die ik er in wil hebben. Ja in hokjes, maar dat boeit me nu even niet.

Timers

In Visual Basic gebruik ik timers om functies uit te voeren. Stel elke 20 seconden controleert een functie of de database verbinding er nog is en zo niet dan verbind hij weer met de database server. Zo kun je heel veel dingen tegelijk uitvoeren en zit dat elkaar niet in de weg en ook wacht het niet op elkaar zo dat je programma even stopt en weer door gaat na een timer wat onwenselijk is. Dus op zoek naar een timer voor C. Na veel zoeken ( 1,5 dag ) en proberen heb ik een timer gevonden. Helaas kan ik er maar één starten. Dus de juiste timer heb ik nog niet. Dat word nog een lange zoektocht!

Database verbinding

Na het installeren van de mysql-devel package had ik de benodigde mysql.h. Op de website van mysql.com vond ik wat voorbeeldjes en aangezien ik wel bekend ben met mysql was dit geen lange zoektocht.  Wederom de compiler en linker regels aangepast anders werkt het niet.
Inmiddels ziet dat er zo uit:

${COMMAND} `pkg-config –cflags –libs gtk+-2.0` ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT} -c ${INPUTS} -lmysqlclient -lz

In de timer de verbinding opgebouwd en in het venster kun je nu zien of de database is verbonden of niet. Omdat het een loop is met een 10  seconden interval controleert hij de verbinding steeds en als de verbinding weg is dan maakt hij weer een nieuwe verbinding. Precies wat ik in alle programma’s en talen doe zoals PHP, Visual Basic, Arduino etc etc. Als de verbinding wegvalt of wat dan ook dan staat dat ook direct in het venster.

Configuratie bestand

Goed, tijd voor een configuratie bestand. Voor de database instellingen. Zodat ik deze niet in het programma zelf hoef te programmeren met alle ellende van dien. Na wat zoeken kwam ik tegen libconfig en dat beloofde wel wat. Ah CentOS 6 heeft libconfig in de Base dus even een

yum install libconfig libconfig-devel

Wat dingen veranderen en implementeren. Baf! compilatie fouten. Wat blijkt, libconfig op CentOS 6 is versie 1.3.2 en huidig is 1.6. Daarom werken voorbeeldjes ook niet. Later maar even proberen een eigen RPM package te maken met de nieuwste versie en hopen dat het lukt. Voorlopig dus even in de koelkast.

Tot zover

Yep, tot zover want verder ben ik nog niet. Komt er op neer dat programmeren ala Microsoft op Linux een rotklus is. GTK2 te oud. Glade, te oud. libconfig, te oud. GTK en Glade kunnen niet een update krijgen. GTK is onderdeel van het OS. Ja CentOS 7 heeft GTK3, maar helaas geen 32Bits OS versie. Waarooooommmmmmm!!!!!!!!!!! Zucht….

Leave a comment

There are no comments yet.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *