C-programmering/Miljö

Från Wikibooks
C-programmering
Historia|Miljö|...TBD...


Detta kapitel handlar om vilka verktyg som behövs, hur man kan få tillgång till fria programmeringsverktyg och hur man arbetar med dem när man programmerar. Den handleder om hur man kan installera en fri och OpenSource programmeringsmiljö för att ha något att arbeta med, men naturligtvis kan man tillämpa de flesta av bokens kunskaper även i andra kompilatormiljöer för ANSI C.

Verktyg[redigera]

Programmering i C innebär att man skriver textfiler och sedan kompilerar dessa till ett program som direkt kan köras av operativsystemet. Det finns så kallade IDE:er (Integrated Desktop Environment) som på ett sätt hjälper användaren genom att ladda färdiga programmallar, att hitta biblioteksfunktioner som följer med kompilatorn "på köpet", och att kompilera och generera det färdiga programmet. Dessa fantastiska IDE:er har ibland buggar som gör att de kraschar eller genererar felaktigt, och då måste man veta vad som händer "under huven", annars sitter man fast. Denna bok går den hårda vägen genom att undvika IDE:er som var och en kräver en egen handbok. Här används i huvudsak gcc, GNU make, vilka är OpenSource, gratis och tillgänglig för nästan alla operativsystem. Som textredigerare beskriver jag här jedit, också OpenSource, och den är skriven i Java, så att den ser ut och fungerar exakt likadant på alla operativsystem.

Textredigerare[redigera]

(Översikt att skumma)

Kompilering använder rak oformaterad text, exempelvis programkoden

#include <stdio.h>
int main() {
    printf("Hej världen!\n");
    return 0;
}

exakt som det står, tecken för tecken. Det finns ordbehandlare, men dessa genererar en massa osynliga tecken när man sparar dem. En texteditor lägger inte in något okontrollerat som inte C-kompilatorn förstår sig på.

Exempel på världsberömda texteditorer:

  • Notepad i Windows, man kan upplysningsvis komma åt den genom att i startmenyn skriva notepad,
  • gedit i Linux,
  • TextEdit på MacOS
  • de såta fienderna vi versus emacs på Un*x, som har krigat fiktivt sedan slutet på 1970-talet, alltså mycket längre än Windows och ännu mycket längre än Linux eller MacOS någonsin existerat

En svindlande lång lista över texteditorer finns på TextEditors.org[1].

Vi kommer här att installera och köra den mycket portabla och kompetenta jEdit[not 1], som har ett identiskt användargränssnitt på alla operativsystem.

Kompilatorer[redigera]

(Översikt att skumma)

För att översätta C-kod till maskinkod behövs en kompilator. Den genererar ett program på maskinkod som kan köras på din dator. Exempel på kompilatorer är:

  • gcc – GNU Compiler Collection, som är OpenSource och av mycket hög kvalitet[2], gcc är egentligen en hel miljö med olika kompilatorer och verktyg, varav C-kompilatorn funnits med sedan första början
  • cygwin – en portering av gcc och en massa Un*x/Linux utvecklarprogram och verktyg till Windows så att utvecklare får tillgång till en mycket snarlik utvecklingsmiljö[3]
  • MinGW (Minimalist GNU for Windows) – en annan, mycket mer avskalad portering av gcc till Windows[4]
  • LLVM – är en oberoende OpenSource utvecklingsmiljö som inkluderar C- och C++-kompilator[5], den grundade sig ursprungligen i ett universitetsprojekt som gick ut på snabb kompilering till snabb kod, men den uppvisar sådana egenskaper att det är lätt att bygga nya kompilatorer – LLVM har just genom detta stor potential inför framtiden.

I denna bok använder vi oss av gcc, dels därför att det finns till de flesta operativsystem, dels för det används ute i arbetslivet och att man har nytta av kunskaperna.

Byggautomation[redigera]

(Översikt att skumma)

För små program räcker det med att kompilera sitt program på kommandoraden, men när man bygger större program blir det praktiskt att bryta ner sitt program i delprogram som man lägger i separata filer, så kallade moduler. Man designar sina moduler så att de löser en enskild uppgift, detaljer och exempel på moduler kommer i kapitlet om moduler och bibliotek. För att hantera dessa moduler praktiskt, behövs det byggautomationsverktyg som kompilerar varje modul för sig och till sist sätter ihop modulerna till ett program genom att länka ihop dem, och en viss grupp av sådana verktyg brukar heta någon variation på make, bland annat:

I stället för att fegt undvika make i det längsta, introducerar vi detta verktyg redan från början, enkel användning av make stör knappast utvecklingsprocessen, och vi får en naturlig ingång till automatbyggnation som vi har stor nytta av senare.

I denna bok använder vi oss av GNU make, av samma skäl som gcc: det finns överallt och används professionellt.

Att installera verktygen[redigera]

(Praktiskt installationsarbete)

I denna sektion installerar vi följande verktyg:

  • jEdit
  • gcc – GNU Compiler Collection, samt
  • GNU make.

Att installera på Linux, Debian-derivat[redigera]

Omkring 50% av alla Linux-användare använder ett Debian-derivat:
Bodhi, CrunchBang, Debian, Knoppix, Lubuntu, Linux Mint, OS4, Pear, Snowlinux, SolusOS, Ubuntu och Zorin.

Synaptic Package Manager, installationsprogrammet på Debian/GNU/Linux, samt derivat som Ubuntu och Linux Mint
Starta Synaptic:[redigera]

I Linux brukar man föredra att installera via sin pakethanterare. I Debian/GNU/Linux går man upp i menyn:

Programmeny>System>Pakethanteraren Synaptic

I dess derivat, t.ex. Ubuntu, Linuxmint eller Knoppix hittar man Synaptic på liknande sätt. När man angivit root-lösenord, så öppnas Synaptic.

jEdit:[redigera]

I vänster blädderfönster bläddrar man först ner till sektionen Textredigerare och i höger blädderfönster letar man sig ner till programmet jedit, som man installerar genom att högerklicka för meny och på denna välja

Markera för installation
gcc:[redigera]

Nu vill vi ha utvecklingsverktyg så i vänster blädderfönster bläddrar man till sektionen Utveckling där både GNU Compiler Collection och GNU Make finns. För GNU Compiler Collection går vi till höger blädderfönster och letar oss ner till gcc, vilken vi markerar för installation på samma sätt genom att högerklicka och välja

Markera för installation
GNU make:[redigera]

GNU make finns i sektionen Utveckling under namnet make som markeras för installation.

installationen:[redigera]

när vi så valt jedit, gcc och make, så trycker vi på Verkställ i verktygslisten under programmenyn. Nu skall det dyka upp en dialog som frågar oss Verkställ följande ändringar? vari vi trycker på knappen Verkställ för att godkänna alltihop. Nu skall installationen rulla på genom att först ladda ner relevanta paketfiler, och därefter installera dem i systemet.

verifiera:[redigera]

öppna ett terminalfönster och

  1. skriv gcc. Man skall få gcc: fatal error: no input files, etc..
  2. skriv make. Man skall få make: *** Inga mål angavs och ingen makefil hittades. Stannar.
  3. skriv jedit. Jedit startar.

Om installationen på något sätt blev fel, så blir ovanstående i stället:

bash: gcc: kommandot finns inte

och liknande för make och för jedit. Då måste man konsultera Linux-handboken eller googla på Internet. Ett vanligt fel som kan uppkomma är att ens egna paketlistor inte är up-to-date. Man trycker då på Läs om i verktygslisten under programmenyn, vilket kan ta ett ganska långt tag innan det blir klart eftersom man kan få uppdatera ett hundratal programpaket om man inte läst om på länge.

Att installera på Linux, Red-Hat-derivat[redigera]

Omkring 25% av alla Linux-användare använder ett Red-Hat-derivat:
CentOS, Fedora, Mageia, Red Hat Enterprise Linux (RHEL), PCLinuxOS, ROSA.

Att installera på Linux, Arch-derivat[redigera]

Omkring 10% av alla Linux-användare använder ett Arch-derivat:
Arch, Chakra, Manjaro.

Att installera på Windows[redigera]

Noter[redigera]

  1. Ja, jEdit är skriven i Java, detta är en typisk tillämpning där Java är bättre än C – men i valet mellan Java och C kan man välja både-och, enligt iakttagelsen att programspråken kompletterar varandra utan något stort överlapp

Referenser[redigera]

  1. TextEditors.org
  2. GCC, the GNU Compiler Collection
  3. Cygwin
  4. MinGW/Minimalist GNU for Windows
  5. The LLVM Compiler Infrastructure

Externa länkar[redigera]

Fria kompilatorer:

Kanske (tveksamt) fria kompilatorer:

  • Watcom C/C++ compiler, en i forna tider kommersiell kompilator vars företag köptes upp av Sybase som ansåg att Watcoms kompilator konkurrerade med deras egna, och därför släppte denna fri