MyWackoSite : NsuTs/Documentation/devguide/compilers/mingw

Min GW-5.1.4

Версия Min GW 5.1.4 с компилятором gcc 3.4.5 и урезанными библиотеками.

Библиотеки

В lib/ лежит довольно много библиотек, при этом «ненужные» (lib{imagehlp,iphlpapi,ksproxy,mswsock,netapi32,penwin32,scrnsave,snmpapi,url,vfw32,videoprt,win{inet,mm,spool},ws2_32,wsock32,wst,wstapi32}.a переименованы. Заголовочные файлы доступны для всех библиотек.

Безопасность

Скрипт компиляции mingw.bat линкует каждый компилируемый файл с mingw/restr.o.
С помощью objdump выяснено, что restr.o скомпилирован из checker/temp.cpp, т. е. представляет собой переопределение некоторых функций (accept, bind, send, ...) на fprintf(stderr, “Security Violation”); exit 1;

Min GW-gcc-4.6.1

Компилятор gcc версии 4.6.1 с минимально необходимыми библиотеками.

Установка

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

Из w32api нужны только файлы lib/lib{advapi,kernel,shell,user}32.a

Библиотеки

Так как распакованы только нужные пакеты, то в lib/ нет библиотек для работы с сетью, процессами и окнами.
В частности, большинство «ненужных» библиотек находилось в пакете w32api.

По умолчанию для запуска бинарников, произведённых gcc нужны libgcc_s_dw2–1.dll и libstdc+±6.dll. Первый нужно линковать статически (-static-libgcc), а второй:

Безопасность

Дополнительно, каждый компилируемый файл линкуется с restrict.o, переопределяющим accept, bind, send, и т. д.

Будущее