DLang - formát spustitelného souboru

cinnamon

DLang - formát spustitelného souboru
« kdy: 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.


Danny

Re:DLang - formát spustitelného souboru
« Odpověď #1 kdy: 18. 10. 2018, 12:21:40 »
Není to jenom jiná verze programu "file", která to reportuje jinak?

cinnamon

Re:DLang - formát spustitelného souboru
« Odpověď #2 kdy: 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 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.

Daniel Kozak

Re:DLang - formát spustitelného souboru
« Odpověď #3 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

Daniel Kozak

Re:DLang - formát spustitelného souboru
« Odpověď #4 kdy: 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