/ / Prepojenie viackrát jedným objektom súboru krížovej platformy? - c ++, c, linker, cross-platform

Viacero prepojenie jedného súboru s viacerými platformami? - c ++, c, linker, cross-platform

Ak kompilovam medziplatformový kód kódu do objektového súboru, bude možné použiť linker na vytvorenie samostatných spustiteľných súborov závislých od platformy (.exe, .bin) z tohto jediného binárneho súboru?

EDIT: Zdá sa, že respondenti don "t naozaj pochopiť moju otázku. I" m pýtať, či môžete použiť cross-platform objekt a generovať platformy-závislé spustiteľné súbory z toho.

odpovede:

1 pre odpoveď č. 1

To do značnej miery závisí úplne na linker a ďalšie vývojové nástroje, ktoré máte. Určite kríž zostavenie je možné v pokročilom prostredí ako napr gcc, kde môžete generovať objektový kód pre rôzne architektúry.

Ale balenie všetkých different-architektúra objekty do jedného spustiteľného súboru nie je niečo, čo som kedy videl gcc.

Videl som tučné binárne súbory na platformách Apple(kde by spustiteľný súbor bežal na starých 68K Macs alebo novších PowerPC), ale ja som ich nikdy nebol veľkým fanúšikom a Apple tam mal úplnú kontrolu nad prostredím.

Okrem toho, zavádzací kód (súčasť OSzvyčajne) musí byť schopný zistiť, ktorú architektúru by mal extrahovať a spúšťať z takéhoto tukového binárneho systému (to je miesto, kde sa ovládacie prvky spoločnosti Apple hodili - mohli modifikovať rôzne operačné systémy, aby zistili a načítajú správnu verziu).

Osobne si myslím, že ste buď lepšiepoužitím prenosného jazyka (Java, Perl, Python et al) alebo balenia vašej aplikácie do rôznych binárnych súborov - vždy môžete použiť jednu z vynikajúcich inštalačných nástrojov pre rôzne platformy na inštaláciu správnej verzie.


Na základe vašej úpravy objasníme otázku: áno. Ak je objekt súbory sú skutočne multiplatformové, budú fungovaťvšetky tieto platformy. Takže podľa definície môžete na tomto základe vytvoriť spustiteľný súbor špecifický pre platformu. Všimnite si, že to nie je to isté ako kompilovanie nejakej platformy zdrojový kód pretože samotný proces kompilácie ho s najväčšou pravdepodobnosťou uzamkne na špecifickú platformu.

A opäť záleží na použitom reťazci nástrojov (kompilátor, linker, nakladač atď.).


1 pre odpoveď č. 2

Tukové binárne súbory by mali byť podporované aj na Linuxe, nikdy sa však neskúšali.

Stránka FatELF hovorí, že podporujú statické a dynamické knižnice, ich faq sa javí ako rozsiahle.