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.
Není to jenom jiná verze programu "file", která to reportuje jinak?
Citace od: Danny kdy 18. 10. 2018, 12:21:40
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.
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
Citace od: Daniel Kozak kdy 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
Presneji to bude nejspis tim ze se v novem ubuntu pouziva pro gcc nejaka volba neco jako
-Wl,-z,now