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í
×
    včera 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 16
    včera 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.12. 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    23.12. 13:55 | Nová verze

    Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    23.12. 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    22.12. 23:44 | Nová verze

    Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.

    Ladislav Hagara | Komentářů: 0
    21.12. 05:00 | Nová verze

    Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 2
    21.12. 01:55 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    19.12. 17:22 | IT novinky

    Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.

    Ladislav Hagara | Komentářů: 14
    19.12. 17:00 | Komunita

    Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.

    Ladislav Hagara | Komentářů: 1
    Kdo vám letos nadělí dárek?
     (33%)
     (2%)
     (10%)
     (2%)
     (1%)
     (2%)
     (16%)
     (19%)
     (14%)
    Celkem 83 hlasů
     Komentářů: 18, poslední včera 15:30
    Rozcestník

    Dotaz: gcc, preklad bez includovani

    29.7.2005 14:04 qwerty | skóre: 9
    gcc, preklad bez includovani
    Přečteno: 164×
    Dobry den,

    zajimalo by me jakto ze se prelozi muj program a normalne funguje:

    int main(void) { printf("abc"); }

    kdyz printf je deklarovane v stdio.h a to tam neincluduju. Uvazoval sem ze gcc nejak automaticky includuje standartni I/O knihovnu ale kdyz se podivam na to co vypadne po praci preprocesoru (gcc -E) tak je tam:

    # 1 "x.c" int main() { printf("abc"); }

    takze by to snad printf nemelo znat a melo byt to hodit chybu ne ?

    Odpovědi

    29.7.2005 14:14 #Tom
    Rozbalit Rozbalit vše Re: gcc, preklad bez includovani
    Proč by mělo? Když si nezapnete varování, chová se překladač podobně, jako by v programu bylo deklarováno tohle:
    int printf(int, ...);
    
    A int a char * se převedou bez problémů (většinou), takže to funguje. Zkuste ale toto:
    gcc -o program -Wall -Werror -pedantic -ansi program.c
    
    6.8.2005 20:52 qwerty | skóre: 9
    Rozbalit Rozbalit vše Re: gcc, preklad bez includovani
    jeste bych k tomuto mel jednu otazku. Kdyz mam dva prelozene objektove soubory a oba obsahuji stejny symbol (napriklad v obou budu mit definici funkce xyz()) tak linker pri slinkovavani hodi kolizi. Zajimalo by me, proc takovato dvoji definice nekoliduje, pokud jedna definice je v objektovem souboru a druha je ve sdilene knihovne, ktera se linkuje spolecne s nim pri prekladu. Jako napr. kdyz si udelam definici funkce printf(char*) v nejakem souboru, tak i kdyz sdilena knihovna libc se linkuje spolecne s timto souborem, tak kolize nevznikne a volani funkce vola tu mnou definovanou. Projizdel jsem si libc readelfem a printf neni WEAK symbol.
    6.8.2005 21:09 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: gcc, preklad bez includovani
    6.8.2005 22:10 qwerty | skóre: 9
    Rozbalit Rozbalit vše Re: gcc, preklad bez includovani
    Toto ale, pokud se nemylim, hovori o dynamickem linkeru (/lib/ld-linux) jako zavadeci ktery po spusteni nejakeho spustitelneho souboru linkuje sdilene knihovny na kterych je ten spustitelny soubor zavisly. Ale ten muj problem vznika pri normalnim linkovani gcc uz pri vzniku toho spustitelneho souboru.
    6.8.2005 23:28 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: gcc, preklad bez includovani
    Jaký problém? Jeden globální symbol v programu může mít akorát jednu adresu. Když chceš v každém souboru nezávislé symboly, máš použít static. Případně mezi tím existuje ještě třída viditelnosti STV_HIDDEN (viz ten článek), kterou můžeš vytvořit symboly viditelné např. v rámci celé knihovny, ale ne mimo ni.
    6.8.2005 23:39 qwerty | skóre: 9
    Rozbalit Rozbalit vše Re: gcc, preklad bez includovani
    No jako neni to problem ale jen moje zvedavost. Proste me zajima jakto ze nekoliduje symbol z meho objektoveho souboru se stejnym symbolem ze sdileneho objektu. Oba jsou globalne viditelne (ten muj urcite je a ten z libc musi byt taky protoze pokud si napr. funkci printf sam nenadefinuju a pritom pri linkovani nebudu pridavat libc tak mi bude uz gcc pri linkovani rvat unresolved symbol) a pritom nekoliduji.. kdezto dva stejne globalni symboly ve dvou objektovych souborech koliduji (gcc linker zarve chybu). Jako je mi jasny ze mi v logice teto veci neco unika ale nevim co :)
    7.8.2005 00:06 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: gcc, preklad bez includovani
    Na hledání symbolu v té knihovně vůbec nedojde, protože je definovaný programu, takže viditelnost ničemu nevadí.

    Konflikt může být toho druhu, že se snažíš do jedné tabulky symbolů nacpat dvě definice téhož symbolu, a to ti kompilátor nedovolí.

    Nebo když budou dvě knihovny definovat symbol různě, mohou se dít zajímjavé věci v důsledku pořadí resolvování, takže části kódu dostanou něco, co nečekají. Podstatné ale je, že se symbol podle nějakého pravidla hledá v jednotlivých DSO, a když se najde, tak už se dál nehledá.

    Já nevím, zda má cenu, abych sem postupně opisoval ten článek, raději si ho přečti...

    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.