удаление ненужного кода из gcc andd mingw - PullRequest
0 голосов
/ 14 февраля 2011

я заметил, что mingw добавляет много кода перед вызовом main (), я предположил, что он используется для анализа параметров командной строки, так как одна из этих функций называется __getmainargs (), а также много строк добавляются в конечный исполняемый файл, например mingwm.dll и некоторые строки ошибок (в случае сбоя приложения) говорит об ошибке выполнения Mingw или что-то в этом роде.

мой вопрос: есть ли способ удалить все это? Мне не нужны все эти вещи, я попробовал TCC (крошечный компилятор C), он сделал свою работу. но не кроссплатформенный, как gcc (solaris / mac)

есть идеи?

спасибо.

Ответы [ 2 ]

5 голосов
/ 14 февраля 2011

Да, вам действительно нужно все эти вещи.Это код запуска и разрыва для среды C, в которой выполняется ваш код.

Кроме нехостинговых сред, таких как низкоуровневые встроенные решения, вы найдете в значительной степени все В средах есть что-то подобное.Такие вещи, как /lib/crt0.o в некоторых UNIX-подобных операционных системах или crt0.obj в Windows.

Они имеют жизненно важное значение для успешного выполнения вашего кода.Вы можете свободно опускать библиотечные функции, которые вы не используете (printf, abs и т. Д.), Но необходим код запуска.


Некоторые вещейчто он может выполнить, это инициализация atexit структур, разбор аргументов, инициализация структур для библиотеки времени выполнения C, инициализация предварительных основных значений C / C ++ и т. д.

Это сильно зависит от ОС и,если есть вещи, которые вы не хотите делать, вам, вероятно, придется получить исходный код и извлечь их, по сути, предоставив собственную сокращенную замену объектного файла.

1 голос
/ 14 февраля 2011

Вы можете с уверенностью предположить, что ваша цепочка инструментов не содержит код, который не необходим и может быть безопасно пропущен.

Убедитесь, что вы скомпилировали без отладочной информациии запустите strip на полученном исполняемом файле.Все, что более навязчиво, чем это, требует глубокого знания вашей цепочки инструментов и может привести к довольно странному поведению, которое будет трудно отлаживать - то есть, если вам нужно спросить, как это можно сделать, вы не должны пытаться это делать.

...