Názor k článku Softwarová sklizeň (3. 6. 2009) od BLEK. - „pritom by stacilo vymyslet zpusob, kterym se predaji...

  • Článek je starý, nové názory již nelze přidávat.
  • 3. 6. 2009 23:17

    BLEK. (neregistrovaný)

    „pritom by stacilo vymyslet zpusob, kterym se predaji verze systemovych knihoven a cesty k nim uz zkompilovane binarce.“

    Cesty nepotřebuješ předávat (v binárce totiž většinou nejsou, hledá je linker). A předávání verzí ti nepomůže, protože když je do toho programu zakompilované jedno ABI, tak ti nic nepomůže, ten program s novou verzí prostě chodit nebude.

    Základní problém je v tom, že programátor udělá knihovnu s funkcí třeba int moje_funkce(int a, int b, char *c);

    za půl roku ho napadne, že by ten jeho program mohl mít ještě nějakou novou cool funkci a změní to na: int moje_funkce(int a, int b, char *c, char *d);

    • a program kompilovaný a dynamicky linkovaný vůči té staré knihovně ti s novou knihovnou začne padat (dotyčná knihovna v „d“ dostane náhodný ukazatel). Kdyby ta knihovna byla staticky linkovaná, tak tento problém nevznikne.

    Většina vývojářů knihoven si na tuto situaci dává pozor a nedělá ji. Ale ne všichni. A když mají distribuce takové podmínky, že „všecko musí být linkováno dynamicky, statické knihovny se dokonce v distribuci nesmí ani vyskytovat“, tak pak není snadné udělat binárku co chodí na více distribucích.

    Správně by distribuce měla rozdělit knihovny na ty, co mají stabilní rozhraní (a ty dodávat jako dynamické), a na ty, co nemají (dodávat jako statické).