| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Другие языки > golang мусор в exe |
| Автор: YahоО 9.9.2023, 20:26 |
| Написал код в файле go, например Hello1.go, работает, далее в LiteIDE создал из него файл Hello1.exe, работает, потом посмотрел что же написано в Hello1.exe внутри, а там масса текста на мой взгляд совершенно необязательного для функционирования данного исполняемого файла. Например там текстом записаны пути: C:/Program Files/Go/src/internal/cpu/cpu.go C:/Program Files/Go/src/runtime/internal/sys/intrinsics_common.go C:/Program Files/Go/src/internal/bytealg/bytealg.go C:/Program Files/Go/src/internal/bytealg/count_native.go C:/Program Files/Go/src/runtime/iface.go ... C:/Program Files/Go/src/runtime/lfstack.go C:/Program Files/Go/src/runtime/alg.go C:/Program Files/Go/src/runtime/stubs.go C:/Program Files/Go/src/runtime/typekind.go C:/Program Files/Go/src/runtime/type.go C:/Program Files/Go/src/runtime/mwbbuf.go C:/Program Files/Go/src/runtime/atomic_pointer.go C:/Program Files/Go/src/runtime/cgocall.go D:/Hello1.go килобайт 10 подобного перечисления, и в том числе путь к оригинальному файлу Hello1.go, и если файл Hello1.go удалить то Hello1.exe все равно может работать, т.е. данный путь совершенно не нужен исполняемому файлу. А если Hello1.exe записать на другой компьютер где нет go? Тогда зачем мне иметь ненужные текстовые строки в конечном файле? Как компилировать без мусора? Может надо как то по другому настроить имеющийся LiteIDE ? |
| Автор: Oldshelf 10.9.2023, 06:35 |
| Не нашёл по LiteIDE, но есть информация, как отменить включение отладочных данных в Go: https://stackoverflow.com/questions/30005878/avoid-debugging-information-on-golang |
| Автор: YahоО 10.9.2023, 13:36 |
| Вполне вероятно рецепт по ссылке https://stackoverflow.com/questions/30005878/avoid-debugging-information-on-golang "рекомендую использовать его -ldflags="-s -w", который удаляет таблицу символов и отладочную информацию." помог бы решить проблему, если бы я знал куда врисовать -ldflags="-s -w", пытаюсь так: go build hello.go -ldflags="-s -w" и эдак: go build hello.go -ldflags=-s -w и: go build hello.go -ldflags=-s на все это пишет мне в ответ: named files must be .go files: -ldflags=-s -w Команда завершилась с кодом 1. или named files must be .go files: -ldflags=-s Команда завершилась с кодом 1. По поводу мусора от такой брендовой конторы как то никто и не озаботился до сих пор, все учатся языку и ооп и никто не заглядывает что же там в результате имеет, и множится и носится мусор по миру, удивительно как минимум. По крайней мере мне так и не удается за два дня нагуглить хоть какое то практическое упоминание о попытках что то изменить. Если просто вытереть хоть один символ в исполняемом файле в мусорной области, то файл уже не работает, т.е. даже не пользуясь хранимыми ссылками тем не менее проверяет свою целостность вероятно по хеш-сумме имеющейся в файле. Рассматривая файл можно еще увидеть: "...unicode.Cyrillic unicode.Deseret unicode.Devanagari unicode.Dives_Akuru unicode.Dogra unicode.Duployan unicode.Egyptian_Hieroglyphs unicode.Elbasan unicode.Elymaic unicode.Ethiopic unicode.Georgian unicode.Glagolitic unicode.Gothic unicode.Grantha unicode.Greek unicode.Gujarati unicode.Gunjala_Gondi..." Спрашивается а вот это длинный перечень для чего присутствует в файле в котором управляющие символы вовсе не эти? Можно предположить что реально используемых и минимально необходимых символов в исполняемом файле всего 3-5% от общего их числа, остальное это вредный неиспользуемый в БЫТУ мусор! |
| Автор: YahоО 10.9.2023, 15:11 |
| "Чтобы уменьшить размер полученного двоичного файла" - почти в два раза. "удалить информацию, ненужную во время выполнения" - все таки это мусор! пишем так: go build -ldflags="-s -w" hello.go В итоге мусора конечно меньше, но файл все равно очищен не полностью. Oldshelf спасибо за помощь! |