C, Linux ja kirjastojen oletussijainti ?

Mika0800

Tällä sivulla:

http://www.linux-foundation.org/docs/lsbbook/pam.html

on esimerkki pam -autentikoinnista.

Kokeilin copypasteta tuon tiedostoksi koe1.c

käännös kuitenkin törmää virheilmoitukseen:

mika0800@amd2300:~/clangtest$ gcc -o koe1 koe1.c
koe1.c:1:31: error: security/pam_appl.h: No such file or directory
koe1.c:2:31: error: security/pam_misc.h: No such file or directory

tuosta voi päätellä, että gcc yrittää (turhaan) etsiä oletushakemiston alihakemistosta security tiedostoja pam_appl.h ja pam_misc.h

1. On varmaankin joku järkevä keino kertoa gcc:lle, mikä on se perushakemisto, jonka alihakemisto tuo security on. Miten ?

2. Onko koneessani varmasti jossain kyseinen security -hakemisto. Jos ei, mitä pitää asentaa (KUbuntu) jotta kyseiset pam -modulit asennetaan.

3. (mahd. kohdan 2. toimenpiteiden jälkeen): onko joku standardi perushakemisto, jonka alihakemistona tuo security pitäisi olla, vai joudunko etsimään esim. find -komennolla ?

Tässä onkin olennaisin eroi windows- ja linuxohjelmoinnin välillä. Jos windowsiin asentaa vaikkapa VC :n, niin VC:n asennusohjelma asentaa useimmin tarvitut tiedostot sekä laittaa VC :n oletusasetuksiin tiedon siitä, mikä on asennettujen lähkdekooditiedostojen (.h, .c ja .cpp) asennushakemisto, tai perushakemisto, johon suhteellisena noita polkunimiä ratkaistaan. Linuxin asennuksen jäljiltä gcc:lle ei ole annettu vastaavia oletussijainteja automaattisesti, joten nuo ilmeisesti linuxissa jäävät käyttäjän ongelmaksi selvittää ja laittaa kohdalleen, jotta c -ohjelmia voisi kääntää.

Ja vielä: muuttuuko oman koneeni autentikointitapa jotenkin pelkästään tuon pam -systeemin asentamisesta, vai onko se vain modernimpi standardi, joka oletuksena tekee asiat kuten ennenkin, mutta mahdollistaa asioiden myöhemmän muuttamisen siten, ettei eri ohjelmia tarvitse siinä vaiheessa uudellenkääntää ?

10

1215

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • läskipää
    • läskipää

      Siis asenna distrosi pakettihallinnan kautta tuo PAM:n dev-paketti (paketin nimi vaihtelee distroissa)

      • läskipää

        Pitipä vielä ihan kokeilla ko. sorsaa eli kääntyy komennolla:
        gcc koe.c -o koe -lpam -lpam_misc


      • Mika0800
        läskipää kirjoitti:

        Pitipä vielä ihan kokeilla ko. sorsaa eli kääntyy komennolla:
        gcc koe.c -o koe -lpam -lpam_misc

        1. Kun tiedetään, että tiedostot pam_appl.h ja pam_misc.h puuttuvat, miten noista puuttuvien tiedostojen nimistä saa selville, että tarvittavan paketin nimi on libpam0g-dev ?

        Onko tähän jokin sellainen tapa, jonka voisi jopa automatisoida, ts. kun asian selvitysohjelmalle annetaan syötteeksi:

        pam_appl.h pam_misc.h

        niin ko. selvitysohjelma tulostaisi:

        libpam0g-dev

        2. Mistä tietää, että kääntäjälle pitää antaa optio:

        -lpam -lpam_misc

        ?

        3. Olettaisin, että VC :ssa (jos windowsissa nyt yleensäkään on pam:ia), olisi asia hoidettu siten, että pelkästään noiden

        pam_appl.h ja pam_misc.h -tiedostojen määrittely projektiin riittää, kaikki muu asiaan liittyvä tapahtuu automaattisesti.

        VC :aa olen käyttänyt hyvin vähän, mutta esim. jos sama tehtäisiin Delphillä, siinä pitäisi tehdä 1 (tai 2) asiaa:

        1. (joka tapauksessa):

        // moduliin, joka pam -funktioita tarvitsevat:

        uses
        pam_appl, pam_misc;

        2. Jos kyseiset modulit kuuluvat ko. Delphin versioon, muuta ei tarvitse tehdä, sillä Delphin mukana tulevien unitien osalta Delphi tietää automaattisesti, mistä hakemistosta nuo löytyvät; mitään optioita tai määrityksiä ei tällöin tarvitse tehdä.

        Jos kyse on 3. osapuolen toimittamista uniteista, jotka eivät kuulu Delphin vakiokokoonpanoon, silloin täytyy kyseiset unitit lisätä projektiin; tähän tarvitaan myös polkunimet.

        Jos kuitenkin laittaa rastin kohtaan "Save as Delphi Default", niin tällöin, jos myöhemmin luo toisenkin uuden projektin, jossa ko. tiedostoja tarvitaan, niin nämä löytyvät automaattisesti pelkällä tiedostonimellä ilman polkua; tässä hyödynnetään tuota aiemmin "Delphi default" -asetuksen teon yhteydessä syötettyä tietoa.

        Ilmeisesti komentorivikääntäjissä automaatio ei ole näin pitkällä, vaan niille pitää antaa lisäparametreja.


      • Siis häh?
        Mika0800 kirjoitti:

        1. Kun tiedetään, että tiedostot pam_appl.h ja pam_misc.h puuttuvat, miten noista puuttuvien tiedostojen nimistä saa selville, että tarvittavan paketin nimi on libpam0g-dev ?

        Onko tähän jokin sellainen tapa, jonka voisi jopa automatisoida, ts. kun asian selvitysohjelmalle annetaan syötteeksi:

        pam_appl.h pam_misc.h

        niin ko. selvitysohjelma tulostaisi:

        libpam0g-dev

        2. Mistä tietää, että kääntäjälle pitää antaa optio:

        -lpam -lpam_misc

        ?

        3. Olettaisin, että VC :ssa (jos windowsissa nyt yleensäkään on pam:ia), olisi asia hoidettu siten, että pelkästään noiden

        pam_appl.h ja pam_misc.h -tiedostojen määrittely projektiin riittää, kaikki muu asiaan liittyvä tapahtuu automaattisesti.

        VC :aa olen käyttänyt hyvin vähän, mutta esim. jos sama tehtäisiin Delphillä, siinä pitäisi tehdä 1 (tai 2) asiaa:

        1. (joka tapauksessa):

        // moduliin, joka pam -funktioita tarvitsevat:

        uses
        pam_appl, pam_misc;

        2. Jos kyseiset modulit kuuluvat ko. Delphin versioon, muuta ei tarvitse tehdä, sillä Delphin mukana tulevien unitien osalta Delphi tietää automaattisesti, mistä hakemistosta nuo löytyvät; mitään optioita tai määrityksiä ei tällöin tarvitse tehdä.

        Jos kyse on 3. osapuolen toimittamista uniteista, jotka eivät kuulu Delphin vakiokokoonpanoon, silloin täytyy kyseiset unitit lisätä projektiin; tähän tarvitaan myös polkunimet.

        Jos kuitenkin laittaa rastin kohtaan "Save as Delphi Default", niin tällöin, jos myöhemmin luo toisenkin uuden projektin, jossa ko. tiedostoja tarvitaan, niin nämä löytyvät automaattisesti pelkällä tiedostonimellä ilman polkua; tässä hyödynnetään tuota aiemmin "Delphi default" -asetuksen teon yhteydessä syötettyä tietoa.

        Ilmeisesti komentorivikääntäjissä automaatio ei ole näin pitkällä, vaan niille pitää antaa lisäparametreja.

        "Ilmeisesti komentorivikääntäjissä automaatio ei ole näin pitkällä, vaan niille pitää antaa lisäparametreja."

        Edellisessä kerrottiin mitä kirjastoja tulee käyttää. Viimeksi kun katsoin niin ei VC :kaan osannut niitä itsekseen projektiin lisätä (vaikkakin turhia kirjastoja lisätään projektiin kysymättäkin ja kääntäminen hidastuu).

        Kyllä gcc yhden paskan mäsän luomuksen voittaa.


      • läskipää
        Mika0800 kirjoitti:

        1. Kun tiedetään, että tiedostot pam_appl.h ja pam_misc.h puuttuvat, miten noista puuttuvien tiedostojen nimistä saa selville, että tarvittavan paketin nimi on libpam0g-dev ?

        Onko tähän jokin sellainen tapa, jonka voisi jopa automatisoida, ts. kun asian selvitysohjelmalle annetaan syötteeksi:

        pam_appl.h pam_misc.h

        niin ko. selvitysohjelma tulostaisi:

        libpam0g-dev

        2. Mistä tietää, että kääntäjälle pitää antaa optio:

        -lpam -lpam_misc

        ?

        3. Olettaisin, että VC :ssa (jos windowsissa nyt yleensäkään on pam:ia), olisi asia hoidettu siten, että pelkästään noiden

        pam_appl.h ja pam_misc.h -tiedostojen määrittely projektiin riittää, kaikki muu asiaan liittyvä tapahtuu automaattisesti.

        VC :aa olen käyttänyt hyvin vähän, mutta esim. jos sama tehtäisiin Delphillä, siinä pitäisi tehdä 1 (tai 2) asiaa:

        1. (joka tapauksessa):

        // moduliin, joka pam -funktioita tarvitsevat:

        uses
        pam_appl, pam_misc;

        2. Jos kyseiset modulit kuuluvat ko. Delphin versioon, muuta ei tarvitse tehdä, sillä Delphin mukana tulevien unitien osalta Delphi tietää automaattisesti, mistä hakemistosta nuo löytyvät; mitään optioita tai määrityksiä ei tällöin tarvitse tehdä.

        Jos kyse on 3. osapuolen toimittamista uniteista, jotka eivät kuulu Delphin vakiokokoonpanoon, silloin täytyy kyseiset unitit lisätä projektiin; tähän tarvitaan myös polkunimet.

        Jos kuitenkin laittaa rastin kohtaan "Save as Delphi Default", niin tällöin, jos myöhemmin luo toisenkin uuden projektin, jossa ko. tiedostoja tarvitaan, niin nämä löytyvät automaattisesti pelkällä tiedostonimellä ilman polkua; tässä hyödynnetään tuota aiemmin "Delphi default" -asetuksen teon yhteydessä syötettyä tietoa.

        Ilmeisesti komentorivikääntäjissä automaatio ei ole näin pitkällä, vaan niille pitää antaa lisäparametreja.

        "1. Kun tiedetään, että tiedostot pam_appl.h ja pam_misc.h puuttuvat, miten noista puuttuvien tiedostojen nimistä saa selville, että tarvittavan paketin nimi on libpam0g-dev ?"

        Haku tuolta http://packages.ubuntu.com/

        Tai haku konsolissa:
        apt-cache search Pluggable Authentication Module

        Tulostuksesta voi "arvata" että "libpam0g-dev - Development files for PAM" on tarvittava paketti.

        "Onko tähän jokin sellainen tapa, jonka voisi jopa automatisoida,"

        Eipä oikein, koska voi olla useita samannimisiä header-tiedostoja.

        "2. Mistä tietää, että kääntäjälle pitää antaa optio:"

        Lukemalla ko. kirjaston dokumentaatiota tai esim. näin:

        gcc koe.c -o koe
        /tmp/ccm6XZuh.o: In function `main':
        koe.c:(.text 0x30): undefined reference to `pam_start'
        koe.c:(.text 0x4c): undefined reference to `pam_authenticate'
        koe.c:(.text 0x6f): undefined reference to `pam_get_item'
        koe.c:(.text 0xa0): undefined reference to `pam_strerror'
        koe.c:(.text 0xba): undefined reference to `pam_end'
        /tmp/ccm6XZuh.o:(.data 0x0): undefined reference to `misc_conv'
        collect2: ld returned 1 exit status

        Jaaha linkkeri (ld) valittaa kirjaston puuttumista ... arvataan että se olisi libpam:
        gcc koe.c -o koe -lpam
        /tmp/ccKZ2pBw.o:(.data 0x0): undefined reference to `misc_conv'
        collect2: ld returned 1 exit status

        Jaa, jotain vielä puuttuu joten listataan libpam0g-dev:n .so-tiedostot (=dynaamisesti linkitettävät vrt. dll):
        dpkg -L libpam0g-dev | grep \.so
        /usr/lib/libpam_misc.so
        /usr/lib/libpamc.so
        /usr/lib/libpam.so

        Kokeilaan libpam_misc.so:
        gcc koe.c -o koe -lpam -lpam_misc

        Kääntyi.

        "2. Jos kyseiset modulit kuuluvat ko. Delphin versioon, muuta ei tarvitse tehdä, sillä Delphin mukana tulevien unitien osalta Delphi tietää automaattisesti, mistä hakemistosta nuo löytyvät; mitään optioita tai määrityksiä ei tällöin tarvitse tehdä."

        Näin myös C:ssä
        jos koodissa on
        #include

        Niin kääntyy ilman optioita.

        Luepa vaikka kohta "3 Compilation options":
        http://www.network-theory.co.uk/docs/gccintro/index.html

        Kun ohjelmassa on useita tiedostoja niin käytetään ns. "autotools"-työkaluja:
        http://www.cs.uku.fi/kurssit/okb2003/book1.html (luvut 4-8)

        Tai IDE:ä (Anjuta, KDevelop), koska sulla on kubuntu niin kokeilepa tuota KDevelopia (josta muistaakseni löytyy myös konsoliprojekti vaihtoehto).


      • TRRY
        läskipää kirjoitti:

        "1. Kun tiedetään, että tiedostot pam_appl.h ja pam_misc.h puuttuvat, miten noista puuttuvien tiedostojen nimistä saa selville, että tarvittavan paketin nimi on libpam0g-dev ?"

        Haku tuolta http://packages.ubuntu.com/

        Tai haku konsolissa:
        apt-cache search Pluggable Authentication Module

        Tulostuksesta voi "arvata" että "libpam0g-dev - Development files for PAM" on tarvittava paketti.

        "Onko tähän jokin sellainen tapa, jonka voisi jopa automatisoida,"

        Eipä oikein, koska voi olla useita samannimisiä header-tiedostoja.

        "2. Mistä tietää, että kääntäjälle pitää antaa optio:"

        Lukemalla ko. kirjaston dokumentaatiota tai esim. näin:

        gcc koe.c -o koe
        /tmp/ccm6XZuh.o: In function `main':
        koe.c:(.text 0x30): undefined reference to `pam_start'
        koe.c:(.text 0x4c): undefined reference to `pam_authenticate'
        koe.c:(.text 0x6f): undefined reference to `pam_get_item'
        koe.c:(.text 0xa0): undefined reference to `pam_strerror'
        koe.c:(.text 0xba): undefined reference to `pam_end'
        /tmp/ccm6XZuh.o:(.data 0x0): undefined reference to `misc_conv'
        collect2: ld returned 1 exit status

        Jaaha linkkeri (ld) valittaa kirjaston puuttumista ... arvataan että se olisi libpam:
        gcc koe.c -o koe -lpam
        /tmp/ccKZ2pBw.o:(.data 0x0): undefined reference to `misc_conv'
        collect2: ld returned 1 exit status

        Jaa, jotain vielä puuttuu joten listataan libpam0g-dev:n .so-tiedostot (=dynaamisesti linkitettävät vrt. dll):
        dpkg -L libpam0g-dev | grep \.so
        /usr/lib/libpam_misc.so
        /usr/lib/libpamc.so
        /usr/lib/libpam.so

        Kokeilaan libpam_misc.so:
        gcc koe.c -o koe -lpam -lpam_misc

        Kääntyi.

        "2. Jos kyseiset modulit kuuluvat ko. Delphin versioon, muuta ei tarvitse tehdä, sillä Delphin mukana tulevien unitien osalta Delphi tietää automaattisesti, mistä hakemistosta nuo löytyvät; mitään optioita tai määrityksiä ei tällöin tarvitse tehdä."

        Näin myös C:ssä
        jos koodissa on
        #include

        Niin kääntyy ilman optioita.

        Luepa vaikka kohta "3 Compilation options":
        http://www.network-theory.co.uk/docs/gccintro/index.html

        Kun ohjelmassa on useita tiedostoja niin käytetään ns. "autotools"-työkaluja:
        http://www.cs.uku.fi/kurssit/okb2003/book1.html (luvut 4-8)

        Tai IDE:ä (Anjuta, KDevelop), koska sulla on kubuntu niin kokeilepa tuota KDevelopia (josta muistaakseni löytyy myös konsoliprojekti vaihtoehto).

        packages.ubuntu.comin haulla voikin näköjään tehdä juuri sen, mitä olen halunnut tehdä apt-komentorivityökaluilla jo kauan: hakea pakettia kaipaamansa tiedoston perusteella.

        Kirjoitin siksi skriptin "apt-search-file", jolla saa haettua esimerkiksi alkuperäisen kysyjän kaipaaman tiedon komennolla

        apt-search-file pam_appl.h

        Ohessa skripti siltä varalta, että joku muukin on kaivannut vastaavaa työkalua.

        Voit asentaa skriptin suorittamalla roottina komennon

        cat > /usr/local/bin/apt-search-file

        kopioimalla tässä vaiheessa terminaaliin alla olevan koodin, painamalla enter ja ctrl-d, ja lopuksi suorittamalla komennon

        chmod a rx /usr/local/bin/apt-search-file

        Jos käytät jotakin muuta Ubuntua kuin dapperia, muista vaihtaa UBUNTU_VERSION-kohtaan oman versiosi nimi (esim. edgy, feisty, gutsy tai hardy). Voit tarkistaa käyttämäsi version tiedostosta /etc/apt/sources.list.

        *** koodi

        #!/bin/bash
        # License: MIT
        # Copyright: [email protected]

        # Check your Ubuntu version in /etc/apt/sources.list
        # You might want to use edgy, feisty, gutsy or hardy
        UBUNTU_VERSION=dapper

        UBUNTU_ARCH=i386

        FILENAME=$1

        if [ "$FILENAME" == "" ]; then
        echo "Usage: apt-search-file FILENAME"
        echo ""
        echo "This program lists Ubuntu $UBUNTU_VERSION ($UBUNTU_ARCH) packages that provide FILENAME."
        exit
        fi

        # The URL is defined in parts due to problems in
        # posting it to a broken discussion forum (suomi24.fi).

        URL="http:"
        URL="$URL//packages.ubuntu.com/cgi-bin/search_contents.pl"
        URL="$URL?word=$FILENAME&searchmode=searchfiles&case=insensitive"
        URL="$URL&version=$UBUNTU_VERSION&arch=$UBUNTU_ARCH"

        wget -q -O- "$URL" \
        | gawk '//{p=1}{if (p==1 && $2!="") print | "sed \"s:]*>::g\""}//{p=0}'


      • läskipää
        TRRY kirjoitti:

        packages.ubuntu.comin haulla voikin näköjään tehdä juuri sen, mitä olen halunnut tehdä apt-komentorivityökaluilla jo kauan: hakea pakettia kaipaamansa tiedoston perusteella.

        Kirjoitin siksi skriptin "apt-search-file", jolla saa haettua esimerkiksi alkuperäisen kysyjän kaipaaman tiedon komennolla

        apt-search-file pam_appl.h

        Ohessa skripti siltä varalta, että joku muukin on kaivannut vastaavaa työkalua.

        Voit asentaa skriptin suorittamalla roottina komennon

        cat > /usr/local/bin/apt-search-file

        kopioimalla tässä vaiheessa terminaaliin alla olevan koodin, painamalla enter ja ctrl-d, ja lopuksi suorittamalla komennon

        chmod a rx /usr/local/bin/apt-search-file

        Jos käytät jotakin muuta Ubuntua kuin dapperia, muista vaihtaa UBUNTU_VERSION-kohtaan oman versiosi nimi (esim. edgy, feisty, gutsy tai hardy). Voit tarkistaa käyttämäsi version tiedostosta /etc/apt/sources.list.

        *** koodi

        #!/bin/bash
        # License: MIT
        # Copyright: [email protected]

        # Check your Ubuntu version in /etc/apt/sources.list
        # You might want to use edgy, feisty, gutsy or hardy
        UBUNTU_VERSION=dapper

        UBUNTU_ARCH=i386

        FILENAME=$1

        if [ "$FILENAME" == "" ]; then
        echo "Usage: apt-search-file FILENAME"
        echo ""
        echo "This program lists Ubuntu $UBUNTU_VERSION ($UBUNTU_ARCH) packages that provide FILENAME."
        exit
        fi

        # The URL is defined in parts due to problems in
        # posting it to a broken discussion forum (suomi24.fi).

        URL="http:"
        URL="$URL//packages.ubuntu.com/cgi-bin/search_contents.pl"
        URL="$URL?word=$FILENAME&searchmode=searchfiles&case=insensitive"
        URL="$URL&version=$UBUNTU_VERSION&arch=$UBUNTU_ARCH"

        wget -q -O- "$URL" \
        | gawk '//{p=1}{if (p==1 && $2!="") print | "sed \"s:]*>::g\""}//{p=0}'

        Joo, hyvin ja nopeasti skripti toimii. Tuon vikan rivin komennon gawk voi vaihtaa awk, joka ymmärtääkseni on ubuntujen perusasennuksessa valmiina, tai sitten vain asentaa paketin gawk.

        (Kumma, että jos hakee apt-search-file awk niin:
        FILE PACKAGE
        usr/lib/9base/bin/awk utils/9base [universe]
        usr/lib/freebsd/awk devel/freebsd5-buildutils [universe]
        usr/share/quilt/compat/awk devel/quiltawk

        Vaikka "locate awk" sanoo sijainin:
        /usr/bin/awk
        Hmm... )


      • Mika0800
        TRRY kirjoitti:

        packages.ubuntu.comin haulla voikin näköjään tehdä juuri sen, mitä olen halunnut tehdä apt-komentorivityökaluilla jo kauan: hakea pakettia kaipaamansa tiedoston perusteella.

        Kirjoitin siksi skriptin "apt-search-file", jolla saa haettua esimerkiksi alkuperäisen kysyjän kaipaaman tiedon komennolla

        apt-search-file pam_appl.h

        Ohessa skripti siltä varalta, että joku muukin on kaivannut vastaavaa työkalua.

        Voit asentaa skriptin suorittamalla roottina komennon

        cat > /usr/local/bin/apt-search-file

        kopioimalla tässä vaiheessa terminaaliin alla olevan koodin, painamalla enter ja ctrl-d, ja lopuksi suorittamalla komennon

        chmod a rx /usr/local/bin/apt-search-file

        Jos käytät jotakin muuta Ubuntua kuin dapperia, muista vaihtaa UBUNTU_VERSION-kohtaan oman versiosi nimi (esim. edgy, feisty, gutsy tai hardy). Voit tarkistaa käyttämäsi version tiedostosta /etc/apt/sources.list.

        *** koodi

        #!/bin/bash
        # License: MIT
        # Copyright: [email protected]

        # Check your Ubuntu version in /etc/apt/sources.list
        # You might want to use edgy, feisty, gutsy or hardy
        UBUNTU_VERSION=dapper

        UBUNTU_ARCH=i386

        FILENAME=$1

        if [ "$FILENAME" == "" ]; then
        echo "Usage: apt-search-file FILENAME"
        echo ""
        echo "This program lists Ubuntu $UBUNTU_VERSION ($UBUNTU_ARCH) packages that provide FILENAME."
        exit
        fi

        # The URL is defined in parts due to problems in
        # posting it to a broken discussion forum (suomi24.fi).

        URL="http:"
        URL="$URL//packages.ubuntu.com/cgi-bin/search_contents.pl"
        URL="$URL?word=$FILENAME&searchmode=searchfiles&case=insensitive"
        URL="$URL&version=$UBUNTU_VERSION&arch=$UBUNTU_ARCH"

        wget -q -O- "$URL" \
        | gawk '//{p=1}{if (p==1 && $2!="") print | "sed \"s:]*>::g\""}//{p=0}'

        Eipä tuo skripti toimi.

        Muutin siihen "gutsy" koska oma KUbuntuversioni on 7.10.

        asensin myös gawk:n, mutta skripti sellaisenaan ei silti toimi.

        toki, jos tuon | gawk ...

        kohdan korvaa vaikkapa tällä:

        >tulokset.htm

        niin em. tiedostosta voi sen jälkeen manuaalisesti käydä katsomassa mistä paketista tiedosto löytyy.

        tuo gawk antaa tällaisen virheilmoituksen:

        ./etsipaketti: line 29: syntax error near unexpected token `|'
        ./etsipaketti: line 29: `| gawk '//{p=1}{if (p==1 && $2!="") print | "sed \"s:]*>::g\""}//{p=0}''

        ennen tuota kyseinen html -sisältö tulostuu raakamuodossa konsolille.


    • Mikb

      Kohtaan 1:

      cpp -v tulostaa esimerkiksi:
      Reading specs from /usr/lib/gcc/..
      ...
      #include "..." search starts here:
      #include search starts here:
      /usr/local/include
      /usr/lib/gcc/jotain/include
      /usr/include
      End of search list.
      ...

      cpp:n ja gcc:n optio -I on myös ystävä.

    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Naiset miltä kiihottuminen teissä tuntuu

      Kun miehellä tulee seisokki ja ja sellainen kihmelöinti sinne niin mitä naisessa köy? :)
      Sinkut
      66
      4562
    2. Haistoin ensin tuoksusi

      Käännyin katsomaan oletko se todellakin sinä , otin askeleen taakse ja jähmetyin. Moikattiin naamat peruslukemilla. Tu
      Ikävä
      14
      2239
    3. Olet sä kyllä

      ihme nainen. Mikä on tuo sun viehätysvoiman salaisuus?
      Ikävä
      25
      1764
    4. Hiljaiset hyvästit?

      Vai mikä on :( oonko sanonut jotain vai mitä?
      Ikävä
      12
      1498
    5. Teuvo Hakkaraisesta tulee eurovaalien ääniharava

      Persuissa harmitellaan omaa tyhmyyttä
      Maailman menoa
      27
      1433
    6. Miksi kohtelit minua kuin tyhmää koiraa?

      Rakastin sinua mutta kohtelit huonosti. Tuntuu ala-arvoiselta. Miksi kuvittelin että joku kohtelisi minua reilusti. Hais
      Särkynyt sydän
      5
      1298
    7. Turha mun on yrittää saada yhteyttä

      Oot mikä oot ja se siitä
      Suhteet
      10
      1227
    8. Näkymätöntä porukkaa vai ei

      Mon asuu yksin. Mitas mieltä ootte ?
      Ikävä
      13
      1136
    9. 22
      1086
    10. Martinasta kiva haastattelu Iltalehdessä

      Hyvän mielen haastattelu ja Martina kauniina ja raikkaan keväisenä kuvissa.
      Kotimaiset julkkisjuorut
      291
      1014
    Aihe