Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

gcc

Anoniem
RobertV
17 antwoorden
  • ik heb het bestand bla.c nou wil dat compile maar hoe doe ik dat met linux/gcc
    ik heb het al 100 keer gezien maar kan het nergsn meer terugvinden
  • Even beyond, het compiler proces bestaat uit preprocessen (alles wat begint met een #), compileren, linken en assembleren.
    Meeste van deze stappen zijn gewoon samengevat in een enkel commando.
    Ik heb hieronder wat veel gebruikte linux/gcc zaken gezet:
    De basis syntax van gcc, een enkel .c bestand maken (van preprocessor tot executable)

    gcc -o bla bla.c

    'bla' wordt dan de executable

    Meerdere .c files assemblen tot 1 executable:
    gcc -o bla bla.c main.c test.c

    Elk bestand apart compilen, daarna alles linken en assemblen:
    gcc -c bla.o bla.c
    gcc -c main.o main.c
    gcc -c test.o test.c
    gcc -o bla bla.o main.o test.o

    Shared system library's meelinken (.so bestanden)
    gcc -o bla bla.c -lcone

    In dit geval wordt bla gemaakt en het bestand 'libcone.so' wordt dynamisch meegelinked (vergelijkbaar met windows' DLL bestanden)

    Zelf een shared object ( =.so) bakken doe je met:
    gcc -shared -o libbla.so bla.c

    Je kunt um daarna weer meelinken met:
    gcc -o bla2 bla2.c -lbla -L.

    Enkele belangrijke switches:
    -l - linked een dynamic library mee, .so bestanden beginnen ALTIJD met lib en eindigen op .so, dus bijv. libbla.so
    -L - geeft een path op waar een library zich bevind, bijv -L/usr/lib/qt3
    -I - geeft een path op waar include files staan, bijv -I/usr/include
    -rdynamic -ldl - geven de mogelijkheid handmatig in je applicatie met .so bestanden te werken, hiervoor moet je echter wel aardige skillz hebben, meer info zie man dlopen

    De shell variabel LD_LIBRARY_PATH wijst naar path voor .so bestand afwijkend van de opgeven in /etc/ld.so.conf, zodoende kun je eigen path opgeven naar je eigen shared library's
    bijv. 'export LD_LIBRARY_PATH=/home/ik/mijnlibs'
    Dit wordt alleen gebruikt tijdens de uitvoering van je app, niet tijden het compilen.

    voor meer on gcc zie 'man gcc'

    Have phun,
    Barry
  • ik heb nou de exutabel maar als ik er op druk gebeurt er niks
  • ben newbie
  • k ik draaide een beetje door ;-)
    Maarreh je weet nu iig hoe je iets moet compilen!
  • dat is ook geluky er is een ebstand maar wat moet ik ermee hoe gaat ie dingen doen
  • wat staat er in bla.c ? Daar hangt vanaf wat hij doet als je "erop drukt" (i.e. de executable start).

    je kan eigen executables beter vanaf de commandoregel starten. Dan zie je wat er evt. voor uitvoer van komt.
  • en hoe doe ik dat
    een exutabel starten vanuit terminal (commando dan)
    en hoe zie je in linux of het een exutabel is
  • stel je start de console (bijv konsole onder kde ofzo)
    doe je een 'cd' naar de dir. waar je progsel staat.
    zoiets:
    $ cd /home/ik/mijn-progsels/
    $ ls
    bla.c
    $
    $ gcc -o bla bla.c
    $ ls
    bla
    bla.c
    $
    $ ./bla
    (bla doet iets)
    $

    (gcc maakt bla na het compilen automatisch executable)
    je kunt het programma 'mc' (mits geinstalleerd) gebruiken om makkelijk te bladeren door je home-dir
    Voor programmeren moet je nooit een gewone filemanager zoals kfm,konqueror,galeon gebruiken.

    Om iets anders zogeheten 'execute rechten' te geven doe je:
    $ chmod +x ./bla
    Meestal krijgen executable met het command 'ls' een apart kleurtje – leuk ;-)
  • [quote:82e01ced02="almar"]dat is ook geluky er is een ebstand maar wat moet ik ermee hoe gaat ie dingen doen[/quote:82e01ced02]

    Nog ff, als je een .c bestand compiled moet er natuurlijk programmeertaal in staan :roll:
    Je kunt toch programmeren neem ik aan? anders moet je niet aan GCC beginnen want dat is louter een compiler voor c,c++,java etc
    Als je een anders z'n progsel wilt compileren moet je niet direct gcc gebruiken maar de compiler tools in dat paket

    Zo wel,
    Even een voorbeeldje:
    [code:1:82e01ced02]
    /* dit is bla.c
    */

    #include <stdio.h>

    main()
    {
    printf("Bla!");
    return;
    }
    [/code:1:82e01ced02]
    Je start bijv een console:
    $ echo $PWD
    Huidige dir is /home/ik
    $ mkdir mijn_progsels
    $ ls
    (…)
    mijn_progsels
    (…)
    $ cd mijn_progsels
    $ mcedit bla.c
    (start de editor van mc, maak je code en sla op!)
    $ ls
    bla.c

    afin, de rest dus
  • nej iemand anders zijn brouwsel,jah ben er zo half mee begonnen maar hij heeft het zo tog goed gedaan en hij doet alleen weet ik niet wat er gebeurt :lol: :lol:
  • Kun je ff ietsie duidelijker zijn ^^;;
  • Als het een commandline programma is, natuurlijk gebeurt er "niks" als je erop dubbelklikt. Het programma heeft immers geen grafische interface. Dat soort programma's moet je via de commandline uitvoeren, zoals eerder werd uitgelegd.

    Hoe je dat programma moet gebruiken hangt helemaal van het programma af.
  • jah beetje wazig maar ben er weer achter
  • yeah right, maar wat moest je nou weten dan?
  • nou hoe ik het op moest starte dat ik nou geluktik weet nou hoe ik moet compile ik weet nu alles dus
    wa ik wou weten dan
  • [quote:6b200676f8="almar"]nou hoe ik het op moest starte dat ik nou geluktik weet nou hoe ik moet compile ik weet nu alles dus
    wa ik wou weten dan[/quote:6b200676f8]

    En nu nog een basiscursus nederlands, of een nieuw klavier. :wink:

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.