Пакет для компиляции MASM32

Многие личности в комментариях на блоге спрашивают, как скомпилировать какой-нибудь исходник masm32. Чтобы решить этот вопрос, собрал небольшой комплект для быстрой компиляции, не требующий установки. Комплект содержит 64-байтный стаб, ассемблер последней версии, патченный линкер, не оставляющий в exe-файлах сигнатуры с информацией о компьютере. Бинарные файлы будут очень маленького размера.

Распаковываем архив в какую-либо папку, потом в ту же папку копируем исходники для компиляции (*.asm, иногда *.rc и *.def).
Открываем asm-файл в блокноте, заменяем все строки вида
\masm32\include\***** на include\*****
и
\masm32\lib\***** на lib\*****

Запускаем cmd.bat. В открывшейся командной строке пишем:

make_exe имя_asm_файла - для компиляции простого exe-файла (имеется только файл *.asm);

make_exe_res имя_asm_файла - для компиляции exe-файла с ресурсами (имеются файлы *.asm, *.rc);

make_dll имя_asm_файла - для компиляции простого dll-файла (имеется только файл *.asm и файл *.def);

make_dll_res имя_asm_файла - для компиляции dll-файла с ресурсами (имеются файлы *.asm, *.rc, *.def);

В результате получим exe или dll файл и несколько вспомогательных (*.res), которые можно удалить.

Скачать: RAR

Пакет для компиляции MASM32: 7 комментариев

  1. Kaimi помоги плз.Когда захожу в cmd.exe ввожу make_exe имя файла_asm,вылазит надпись:"ML" не является внутренней или внешней командой,исполняемой программой или пакетным файлом. Как это решить?

  2. vok,
    Тут ошибка небольшая.
    Вот корректный файл make_exe.bat:

    @echo off
    cls

    SET PATH=C:\Masm32\bin

    bin\ML /nologo -c -coff %1.asm
    if errorlevel 1 goto terminate

    bin\LINK /nologo %1.obj /SUBSYSTEM:WINDOWS /STUB:64stub.exe /FILEALIGN:512 /VERSION:4.0 /MERGE:.rdata=.text /ignore:4078 /RELEASE /BASE:0x400000

    if errorLevel 1 goto terminate

    echo OK

    :terminate

  3. Огромное спасибо, очень полезный мануал. Только путь направить в правильное русло:
    SET PATH=D:\compiler_minimal\bin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *