Releasing units without source code/ru: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Releasing units without source code/ru
| Old | New | Line | |
|---|---|---|---|
| 1 | + | Иногда полезно закрыть общий доступ к исходному коду модуля, например в следующих случаях: | |
| 2 | + | ||
| 3 | + | - Исходный код содержит служебную информацию, не предназначенную для публичного доступа | |
| 4 | + | - В преподавании, когда нужно студентам дать возможность использовать функционал модуля, при этом закрыв от них саму реализацию данного функционала. | |
| 5 | + | ||
| 6 | + | FreePascal позволяет сделать это следующим образом. | |
| 7 | + | ||
| 8 | + | **Поставщику** и **Владельцу** исходного кода модуля необходимо: | |
| 9 | + | ||
| 10 | + | - Скомпилировать модуль отдельно. Для этого используйте параметр компилятора **-Ur** | |
| 11 | + | - Опубликовать два получившихся *.ppu и *.o файлы. (см. раздел 3.3 руководства пользователя) | |
| 12 | + | ||
| 13 | + | **Пользователю** модуля необходимо: | |
| 14 | + | ||
| 15 | + | - Скомпилировать программу с использованием *.ppu и *.o файлами. (для этого используйте параметр компилятора **-Fu**) | |
| 16 | + | ||
| 17 | + | ## Примечание | |
| 18 | + | ||
| 19 | + | - **Владельцу** и **Пользователю** кода нужно иметь одинаковые версии компилятора. | |
| 20 | + | - **Целевая ОС** модуля, должна соответствовать ОС, для которой компилируется программа. | |
| 21 | + | - Если код модуля зависит от другого модуля(ей), то все модули, от которых он зависит, должны быть совместимы с ним. Для проверки совместимости модулей между собой, компилятор использует контрольные суммы, встраиваемые в *** .ppu** файлы. С помощью опции компилятора **-vu** вы можете проверить совместимость модулей между собой. Если какой-то из файлов, используемых модулем, изменился, то компилятор выведет строку вида: *Recompiling ..., checksum changed for ...* (Перекомпиляция… контрольная сумма изменилась для…) | |
| 22 | + | - Рекомендуется использовать стабильный релиз компилятора, поскольку все модули неявно зависят от модуля **System**. | |
| 23 | + | - При компиляции модуля иногда могут использоваться опции, отличающиеся от опции текущего проекта. Например: | |
| 24 | + | - **-M** (*Режим*) | |
| 25 | + | - **-C** (*Проверка*), такая как **-Cr** (*проверка диапазона*), **-Ci** (*проверка ввода/вывода*), **-Co** (*проверка переполнения*), **-Ct** (*проверка стека*) | |
| 26 | + | - **-Sa** (*Использовать assert в скомпилированном коде*) | |
| 27 | + | - **-O** (*Оптимизация*) | |
| 28 | + | - **-gl** (*Генерирует lineinfo код*) | |
| 29 | + | - Для некоторых старых версий компилятора, имена модулей не должны содержать заглавных букв. | |
| 30 | + | ||
| 31 | + | ## Смотрите так же | |
| 32 | + | ||
| 33 | + | - [[Lazarus Packages|Lazarus_Packages#Creating_a_closed_sourced_package]] | |
| 34 | + | ||
| 35 | + | --- | |
| 36 | + | *From the Free Pascal wiki, page "Releasing units without source code/ru", as it stood on 2016-08-19 after a change by Amber, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 37 | + | Category: FPC/ru | |
| 38 | + | Category: Packages/ru | |
| 39 | + | Category: Russian |
