Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: cinnamon 18. 10. 2018, 08:14:20

Název: DLang - formát spustitelného souboru
Přispěvatel: cinnamon 18. 10. 2018, 08:14:20
V Ubuntu 16.04 kompilátor dmd vytváří soubory typu "ELF 64-bit LSB executable", v 18.04 se kompilují jako "ELF 64-bit LSB shared object". A nejen dmd, ale i gdc a ldc. Kompiluje se bez parametrů, např.: dmd test.d. Verze kompilátoru je stejná v 16.04 i 18.04, pro zjištění typu souboru používám file.
Asi to není nic proti ničemu, ale docela by mě zajímalo, co by mohlo být příčinou změny formátu souboru.
Název: Re:DLang - formát spustitelného souboru
Přispěvatel: Danny 18. 10. 2018, 12:21:40
Není to jenom jiná verze programu "file", která to reportuje jinak?
Název: Re:DLang - formát spustitelného souboru
Přispěvatel: cinnamon 18. 10. 2018, 13:04:03
Není to jenom jiná verze programu "file", která to reportuje jinak?
File zobrazuje na 16.04 i 18.04 stejné info (pro soubory kompilované na jedné, nebo druhé verzi Ubuntu), ale zdá se, že formát souboru ovlivňuje gcc, které se používá pro linkování. Když kompilátoru podstrčím (https://dlang.org/dmd-linux.html#environment) clang, pak se formát spustitelného souboru změní na "ELF 64-bit LSB executable".
Možná se dá nějak změnit chování gcc, ale nevím jak.
Název: Re:DLang - formát spustitelného souboru
Přispěvatel: Daniel Kozak 18. 10. 2018, 18:02:39
Co si pamatuji tak to bude tim ze se nove kompiluje se zapnutim PIE
https://askubuntu.com/questions/690631/executables-vs-shared-objects
https://askubuntu.com/a/960212
Název: Re:DLang - formát spustitelného souboru
Přispěvatel: Daniel Kozak 18. 10. 2018, 18:11:26
Co si pamatuji tak to bude tim ze se nove kompiluje se zapnutim PIE
https://askubuntu.com/questions/690631/executables-vs-shared-objects
https://askubuntu.com/a/960212

Presneji to bude nejspis tim ze se v novem ubuntu pouziva pro gcc nejaka volba neco jako
-Wl,-z,now