abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:11 | Nová verze

    Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.

    Ladislav Hagara | Komentářů: 0
    dnes 02:33 | IT novinky

    U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již šestý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.

    Ladislav Hagara | Komentářů: 0
    včera 19:33 | Nová verze

    Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.

    Ladislav Hagara | Komentářů: 0
    včera 02:22 | Nová verze

    Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    včera 01:33 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    15.11. 16:11 | Nová verze

    Byl vydán Debian 13.2, tj. druhá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    15.11. 12:11 | IT novinky

    Google představil platformu Code Wiki pro rychlejší porozumění existujícímu kódu. Code Wiki pomocí AI Gemini udržuje průběžně aktualizovanou strukturovanou wiki pro softwarové repozitáře. Zatím jenom pro veřejné. V plánu je rozšíření Gemini CLI také pro soukromé a interní repozitáře.

    Ladislav Hagara | Komentářů: 4
    14.11. 14:22 | Bezpečnostní upozornění

    V přihlašovací obrazovce LightDM KDE (lightdm-kde-greeter) byla nalezena a již opravena eskalace práv (CVE-2025-62876). Detaily v příspěvku na blogu SUSE Security.

    Ladislav Hagara | Komentářů: 5
    14.11. 13:22 | Nová verze

    Byla vydána nová verze 7.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Tor Browser byl povýšen na verzi 15.0.1. Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    14.11. 10:33 | IT novinky

    Česká národní banka (ČNB) nakoupila digitální aktiva založená na blockchainu za milion dolarů (20,9 milionu korun). Na vytvořeném testovacím portfoliu, jehož součástí jsou bitcoin, stablecoiny navázané na dolar a tokenizované depozitum, chce získat praktickou zkušenost s držením digitálních aktiv. Portfolio nebude součástí devizových rezerv, uvedla dnes ČNB v tiskové zprávě.

    Ladislav Hagara | Komentářů: 45
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (18%)
     (18%)
     (23%)
     (15%)
     (23%)
     (16%)
     (17%)
    Celkem 357 hlasů
     Komentářů: 16, poslední 12.11. 18:21
    Rozcestník

    Dotaz: libc.so a stat()

    18.5.2021 09:05 rastos | skóre: 63 | blog: rastos
    libc.so a stat()
    Přečteno: 582×
    Napísal som si knižnicu v jazyku C. Skompiloval na stroji A a preniesol na iný stroj B a tam mi nezafunguje pretože na A je libc-2.33.so, ktorá funkciu stat() definuje ako "weak symbol" a na stroji B je libc-2.30.so, ktorá stat() nedefinuje vôbec. Kompilovanie tej istej knižnice na B vyrobí binárku, ktorá má stat() v sebe - teda tá funkcia bola prilinkovaná staticky. Ak tomu dobre rozumiem, tak bola zobraná zo statickej verzie libc.

    Dá sa na stroji A nejako (linkeru?) povedať nech vyrobí binárku, ktorá bude fungovať na rôznych strojoch bez ohľadu na "drobné rozdiely" vo verzii libc?

    Řešení dotazu:


    Odpovědi

    18.5.2021 10:16 X
    Rozbalit Rozbalit vše Re: libc.so a stat()
    Nestacilo by to staticky nalinkovat pomoci:
    -static
    ?
    18.5.2021 11:07 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: libc.so a stat()
    Myslíš takto?
    $ cat stat.c 
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    
    void fnc(const char *filename)
    {
            struct stat st;
            stat(filename,&st);
    }
    
    $ gcc -fPIC -shared -o libStat.so stat.c -static -lc
    $ nm -D libStat.so |grep -w stat
                     U stat
    
    Asi nestačilo.
    18.5.2021 22:54 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: libc.so a stat()
    Volby -shared a -static se podle mě vylučují a specifikují výsledný produkt, nikoli způsob linkování závislostí.

    Potřebujete linkovat s libc.a (nikoli libc.so), tedy něco jako:

    gcc -o libtest.so test.c crt1.o libc.a -lm -lc -lgcc

    Netestováno.
    -- OldFrog
    19.5.2021 10:42 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: libc.so a stat()
    man ld

    -static
    Do not link against shared libraries. ... You may use this option multiple times on the command line: it affects library searching for -l options which follow it.

    -shared
    Create a shared library.

    19.5.2021 21:06 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: libc.so a stat()
    Tak to se omlouvám za mystifikaci.
    -- OldFrog
    19.5.2021 19:31 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: libc.so a stat()
    -U znaci, ze je dynamicky.
    debian.plus@protonmail.com
    19.5.2021 20:45 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: libc.so a stat()
    No veď áno. To je práve ten problém.

    Na stroji A dynamický linker loadne moju knižnicu, zistí, že symbol "stat" v binárke mojej knižnice je (U)ndefined, hľadá ho a nájde ho v libc.so.

    Keď takú binárku prenesiem na stroj B, kde libc.so neposkytuje symbol "stat", tak tam tá knižnica nefunguje lebo dynamický linker loadne moju knižnicu zistí, že symbol "stat" je v binárke mojej knižnice (U)ndefined, hľadá ho a nikde ho nenájde.

    Keď na stroji B skompilujem tie isté zdrojáky, tak symbol "stat" je priamo v mojej knižnici ako (t)text - teda ḱód tej funkcie je priamo v binárke mojej knižnice.
    $ nm  libStat.so |grep -w stat
    00000000000082e0 t stat
    
    Domnievam sa, že by malo byť možné na stroji A prinútiť linker vyrobiť tiež binárku, ktorá obsahuje (t)ext funkcie stat(). Taká binárka by potom fungovala na oboch systémoch. Otázka je: ako to tomu linkeru na stroji A povedať?
    19.5.2021 21:39 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: libc.so a stat()
    Mám o preklade napísaný nový svoj blog.
    debian.plus@protonmail.com
    18.5.2021 18:17 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: libc.so a stat()
    Pozor pri statickom linkovani na licenciu/licencie. Glibc byva dost velka, najdi si aj ine c-library implementacie.
    debian.plus@protonmail.com
    19.5.2021 19:34 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: libc.so a stat()
    https://wiki.debian.org/musl

    A nezabudni na licenciu c musl knižnice pridať ku svojmu programu, ked staticky linkuješ tu c knižnicu.
    debian.plus@protonmail.com

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.