Избегайте отладки информации о golang
Я думаю, что gc включает в себя отладочную информацию по умолчанию. Однако я хочу избежать декомпиляции.
Как удалить информацию об отладке при компиляции кода go с помощью gc?
Примечание:
Использование gccgo не решает проблему. Если я не компилирую с '-g', исполняемый файл прерывается и выводит только:
нет отладочной информации в ELF исполняемый errno -1
фатальная ошибка: нет отладочной информации в исполняемом файле ELF
стек выполнения:
нет отладочной информации в ELF исполняемый errno -1
паника во время паники "
Ответы
Ответ 1
У компоновщика go есть флаг -w
, который отключает генерацию данных отладки DWARF. Вы можете предоставить флаг компоновщика для выполнения команд сборки инструмента следующим образом:
go build -ldflags '-w'
Другой подход на платформах Linux/Unix использует команду strip
для скомпилированного двоичного файла. Это, похоже, создает меньшие двоичные файлы, чем вышеупомянутый вариант компоновщика.
Ответ 2
Я рекомендую использовать -ldflags="-s -w"
, который удаляет таблицу символов и отладочную информацию.
В качестве бонуса с Go 1.13 -trimpath
можно использовать для уменьшения длины путей к файлам, хранящихся в файле.