Связывание и окутывание


Команда Shroud (окутать)

Описание:

     shroud [-full_debug] [-list] [-quiet] [-out shrouded_file] filename.ex[w/u]

Команда shroud (окутать) преобразует программу Euphoria, обычно состоящую из главного файла и множества библиотечных файлов, в единственный окутанный (shrouded), т.е. зашифрованный, файл, который легко можно распространять среди других пользователей, не раскрывая своего исходного кода.

Окутанный файл не содержит никаких команд исходного кода Euphoria, а состоит из команд низкоуровневого промежуточного языка (IL), которые отрабатываются исполнительным блоком интерпретатора. Окутанный файл не требует никакой проверки синтаксиса. Его исполнение начинается немедленно, и с большими программами вы заметите сокращение времени старта по сравнению с обычной интерпретацией. Окутанные файлы должны запускаться с помощью исполнительного блока интерпретатора: backend.exe (DOS), backendw.exe (Windows) или backendu (Linux/FreeBSD). Этот исполнительный блок свободно доступен, и вы можете предоставлять его любому из своих пользователей, кому он необходими. Он расположен в каталоге euphoria\bin пакета Euphoria. Под DOS вы можете запустить свой .il-файл (окутанную программу) командой:

      backend myprog.il
 
Под Windows команда будет:
      backendw myprog.il
 
Под Linux или FreeBSD используйте:
      backendu myprog.il
 

Хотя .il-файл не содержит никаких команд исходного кода, он всё же будет выдавать полезную распечатку ex.err в случае ошибки времени прогона.

Шроудер (собственно программа окутывания) удаляет все подпрограммы и переменные, к которым в вашей программе нет обращений. В результате .il-файл получается весьма компактным. В библиотеках обычно содержится множество подпрограмм, переменных и констант, которые не нужны в вашей конкретной программе. Например, ваша программа может включать несколько библиотек третьих сторон, плюс стандартные файлы из каталога euphoria\include, но только некоторые подпрограммы из каждой библиотеки в ней используются. Неиспользуемые подпрограммы не включаются в .il-файл, хотя в исходном коде они есть.

Команда shroud может иметь опции:

-full_debug - Создаётся расширенный .il-файл, который содержит достаточно отладочной информации, чтобы дать полную распечатку ex.err, если случится аварийная остановка.

Обычно имена переменных и информация о номерах строк в .il-файл не включаются, так что ex.err будет просто "безымянным" в тех точках, где могли бы быть имена переменных, а номера строк будут верными только для начала подпрограмм и начала файлов. Показаны лишь величины частных переменных, а не глобальных и местных. И нужно иметь в виду, что некоторым пользователям нужна не только предельная компактность .il-файла, но они и не хотят показывать слишком много информации о своей программе даже в файле ex.err.

-list - Вырабатывается файл deleted.txt, содержащий список подпрограмм и констант, которые не были включены в .il-файл (удалены из кода).
-quiet - Подавляются обычные сообщения и статистика. Выводятся только сообщения об ошибках.
-out окутанный_файл - Результат окутывания выводится в файл с именем "окутанный_файл".

Интерпретатор Euphoria не выполняет трассировку окутанного файла. Вы должны трассировать свой оригинальный исходный код.

Под Linux/FreeBSD шроудер создаёт ваш окутанный файл исполняемым, добавляя строку #! в самом начале файла, которая запускает backendu. Вы можете подавить эту стандартную #!-строку, поместив свою собственную #!-строку в самом начале главного программного файла своего исходного кода Euphoria.

Всегда держите в безопасном месте копию своего оригинального исходного кода, так как нет путей восстановления исходного кода из окутанного файла.


Команда Bind (связать)

Описание:

     bind  [-full_debug] [-list] [-quiet] [-out executable_file] [filename.ex]
     bindu [-full_debug] [-list] [-quiet] [-out executable_file] [filename.exu]
     bindw [-full_debug] [-list] [-quiet] [-out executable_file] [-con] [-icon filename.ico] [filename.exw]

Команда bind (bindw или bindu) выполняет те же самые действия, что и команда shroud, и имеет те же самые опции. Но затем она объединяет ваш окутанный .il-файл с исполнительным блоком интерпретатора (backend.exe, backendw.exe или backendu), чтобы создать единственный самостоятельный исполняемый файл, который вы можете с удобствами использовать и распространять. Вашим пользователям не потребуется устанавливать систему Euphoria. Каждый раз при запуске этого вашего исполняемого файла производится быстрый тест его целостности, выявляющий любое вмешательство в его структуру или порчу. Ваша программа стартует очень быстро, так как проверка синтаксиса не нужна.

Интепретатор Euphoria не будет выполнять трассировку связанного файла, так как команды исходного кода там отсутствуют.

Опции команды bind:

-full_debug - То же самое, что и для shroud выше. Если Euphoria обнаруживает ошибку, ваш исполняемый файл будет генерировать частичную или полную распечатку ex.err, в соответствии с этой опцией.
-list - То же самое, что и для shroud выше.
-quiet - То же самое, что и для shroud выше.
-out executable_file - Эта опция позволяет вам выбрать имя исполняемого файла, созданного биндером (программой связывания). Без этой опции биндер выберет имя, соответствующее имени вашего главного файла исходного кода Euphoria.
-con - (только для bindw) Эта опция служит для создания консольной программы Windows вместо программы Windows GUI. Консольные программы могут использовать стандартные ввод и вывод и работают в текущем консольном окне, вместо того, чтобы создавать для себя новое.
-icon filename[.ico] - (только для bindw) Когда вы связываете программу, вы можете внедрить в неё свой собственный заказной значок, заменяющий стандартный значок, имеющийся в exw.exe. Файл exw.exe содержит значок размера 32x32, 256 цветов. Он напоминает фигуру E). В перечнях файлов Windows показывает этот значок с файлом exw.exe и файлами ваших связанных программ. Вы можете загружать этот значок в качестве ресурса, используя имя "exw" (см. euphoria\demo\win32\window.exw в качестве примера). Когда вы связываете свою программу, вы можете подставить свой собственный значок формата 32x32x256 размером 2238 байт или меньше. Другие форматы также могут работать, пока файл значка имеет размер 2238 байт или меньше. Этот файл должен содержать единственный значок (Windows будет создавать при необходимости изображение большего или меньшего размера). Стандартный файл значка E), euphoria.ico, находится в каталоге euphoria\bin.

Программа Euphoria размером всего в одну строчку даст при связывании исполняемый файл такой же большой, как исполнительный блок интерпретатора, с которым вы её связали, но затем размер исполняемого файла, по мере увеличения вашей программы, растёт очень медленно. Будучи связанным, редактор Euphoria, ed.ex, добавляет всего 27K к размеру исполнительного блока. Исполнительные блоки backendw.exe и backendu (Linux) сжаты компрессором UPX (см. http://upx.sourceforge.net). Исполнительный блок backend.exe сжат компрессором, который идёт вместе с расширителем DOS CauseWay. Блок backend.exe имеет наибольший размер среди трёх, так как включает в себя множество подпрограмм пиксельной графики, отсутствующих в backendw.exe или backendu. Примечание: В некоторых очень редких случаях сжатые исполняемые файлы могут вызывать предупредительные сообщения антивирусных программ. Это просто ложная тревога.

Два первых аргумента, выдаваемых библиотечной подпрограммой command_line(), будут несколько другими, когда ваша программа связана. См. library.doc о деталях вопроса.

Связанный исполняемый файл может отрабатывать перенаправление стандартных ввода и вывода. Например,

        myprog.exe < file.in > file.out
Если же вы напишете небольшую пакетную программу DOS, .bat-файл myprog.bat, в котором имеется строка "ex myprog.ex", вы не сможете перенаправить ввод и вывод на манер:
        myprog.bat < file.in > file.out     (не работает под DOS!)
Но вы могли бы, тем не менее, использовать перенаправление в отдельных строках внутри собственно .bat-файла.