Re: Jak funguji programy v Linuxu


To Debian CZ/SK project discussion list <czdebian-l zavinac debian bod cz>
From Peter Trsko - dogmaT <dogmat zavinac gmail bod com>
Date Wed, 25 Jan 2006 22:30:04 +0100
Mail-followup-to Debian CZ/SK project discussion list <czdebian-l zavinac debian bod cz>
User-agent Mutt/1.5.11

On Wed, 25 Jan, 2006, f bod mach zavinac email bod cz wrote:
> Takze kod ELF pracuje stejne jako com? Odesila prikazy primo na 
> procesor, nebo jej musi jadro nejdrive zpracovat a pak teprve samo 
> jadro odesle urcity prikaz nebo preruseni procesoru?

  Vo vsetkych OS vychadzajucich z unixu ide vsetko cez jadro. V Linuxe
  program vola konkretne volanie jadra cez int 0x80, to je jedine
  prerusenie povolene programu. Parametre volaniu jadra sa ukladaju do
  registrov a ak sa nezmestia potom do zasobnika.

  Volania jadra maju aj interface pre C. Pre zoznam volani jadra:

    man syscalls

  Stranka pre tuto uroven znalosti programovania a programov pod
  linuxom je:
  
    http://linuxassembly.org

  Pre lepsi popis formatu ELF treba vyhladat Executable and Linkable
  Format Specification.

  Urcenie ci je subor spustitelny alebo nie sa robi pomocou nastavenia
  executable bitu v pravach suboru, preto nie je problem s priponou a
  moze byt nazvany akokolvek. Exustuje aj misc spustitelny subor, co je
  vlastne subor ktory ma prvy riadok:

    #!/cesta/interpret

  pricom dojde k spusteniu /cesta/interpret a subor je mu predany ako
  vstup.

  Instalacia programov nie je problem, pretoze program sa nemusi nikde
  registrovat, jedina nutnost je aby sedeli jeho vnutorne nastavene
  cesty s cestami k jeho sucastiam, ale to sa da volit pri kompilacii.
  Sucasti programov sa zvacsa davaju do standardizovanych adresarov.
  Treba si pozriet standardnu adresarovu strukturu linuxu.

  Este musia byt pritomne vsetky dynamicke kniznice s ktorymi je
  dynamicky zlinkovany. O dynamicke linkovanie sa stara dynamicky
  linker:
  
    man ld.so
    
  Cesty kde su kniznice su hlavne /lib, /usr/lib pripadne
  /usr/local/lib. Programom ldd sa da zistit ake kniznice su s danym
  programom zlinkovane.

  Unixove systemy su spate s programovacim jazykom C, do ktoreho boli
  velmi rychlo po vzniku prepisane (existuje prienik mnoziny vyvojarov
  prveho unixu a mnoziny tych co vymysleli C:-)). Preto by bolo dobre sa
  pozriet na neaku knihu/prirucku/howto o programovani v C pod
  unixom/linuxom, kde je mozne dozvediet sa viac o tom ako je unixovy
  program zviazany zo systemom. Tusim sa da nieco take najst na: 
  
    http://www.manualy.sk

  Pridavam sa k tomu, ze je to strasne siroka problematika. Bolo by
  vhodne klast konkretnejsie otazky, alebo naznacit oblast zaujmu. No
  toto nie je moc zameranie tejto konferencie, preto by bolo vhodnejsie
  googlit a citat.

-- 
(dogmaT
        (icq 303140614)
        (jabber dogmat_at_njs_dot_netlab_dot_cz)
        (mail dogmat_at_dogmat_dot_us)
        (web http://dogmat.us))


Partial thread listing: