Sign in Join
Wiki copytemporary

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

OldNewLine
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

Back to history