Difference between revisions of "Releasing units without source code/ru"
From Lazarus wiki
Jump to navigationJump to searchm (categories) |
|||
Line 23: | Line 23: | ||
* Если код модуля зависит от другого модуля(ей), то все модули, от которых он зависит, должны быть совместимы с ним. Для проверки совместимости модулей между собой, компилятор использует контрольные суммы, встраиваемые в '''* .ppu''' файлы. С помощью опции компилятора '''-vu''' вы можете проверить совместимость модулей между собой. Если какой-то из файлов, используемых модулем, изменился, то компилятор выведет строку вида: '' Recompiling ..., checksum changed for ...'' (Перекомпиляция… контрольная сумма изменилась для…) | * Если код модуля зависит от другого модуля(ей), то все модули, от которых он зависит, должны быть совместимы с ним. Для проверки совместимости модулей между собой, компилятор использует контрольные суммы, встраиваемые в '''* .ppu''' файлы. С помощью опции компилятора '''-vu''' вы можете проверить совместимость модулей между собой. Если какой-то из файлов, используемых модулем, изменился, то компилятор выведет строку вида: '' Recompiling ..., checksum changed for ...'' (Перекомпиляция… контрольная сумма изменилась для…) | ||
* Рекомендуется использовать стабильный релиз компилятора, поскольку все модули неявно зависят от модуля '''System'''. | * Рекомендуется использовать стабильный релиз компилятора, поскольку все модули неявно зависят от модуля '''System'''. | ||
− | * При компиляции модуля иногда могут использоваться опции, | + | * При компиляции модуля иногда могут использоваться опции, отличающиеся от опции текущего проекта. Например: |
+ | ** '''-M''' (''Режим'') | ||
+ | ** '''-C''' (''Проверка''), такая как '''-Cr''' (''проверка диапазона''), '''-Ci''' (''проверка ввода/вывода''), '''-Co''' (''проверка переполнения''), '''-Ct''' (''проверка стека'') | ||
+ | ** '''-Sa''' (''Использовать assert в скомпилированном коде'') | ||
+ | ** '''-O''' (''Оптимизация'') | ||
+ | ** '''-gl''' (''Генерирует lineinfo код'') | ||
* Для некоторых старых версий компилятора, имена модулей не должны содержать заглавных букв. | * Для некоторых старых версий компилятора, имена модулей не должны содержать заглавных букв. | ||
Latest revision as of 23:42, 19 August 2016
│
English (en) │
español (es) │
Bahasa Indonesia (id) │
русский (ru) │
Иногда полезно закрыть общий доступ к исходному коду модуля, например в следующих случаях:
- Исходный код содержит служебную информацию, не предназначенную для публичного доступа
- В преподавании, когда нужно студентам дать возможность использовать функционал модуля, при этом закрыв от них саму реализацию данного функционала.
FreePascal позволяет сделать это следующим образом.
Поставщику и Владельцу исходного кода модуля необходимо:
- Скомпилировать модуль отдельно. Для этого используйте параметр компилятора -Ur
- Опубликовать два получившихся *.ppu и *.o файлы. (см. раздел 3.3 руководства пользователя)
Пользователю модуля необходимо:
- Скомпилировать программу с использованием *.ppu и *.o файлами. (для этого используйте параметр компилятора -Fu)
Примечание
- Владельцу и Пользователю кода нужно иметь одинаковые версии компилятора.
- Целевая ОС модуля, должна соответствовать ОС, для которой компилируется программа.
- Если код модуля зависит от другого модуля(ей), то все модули, от которых он зависит, должны быть совместимы с ним. Для проверки совместимости модулей между собой, компилятор использует контрольные суммы, встраиваемые в * .ppu файлы. С помощью опции компилятора -vu вы можете проверить совместимость модулей между собой. Если какой-то из файлов, используемых модулем, изменился, то компилятор выведет строку вида: Recompiling ..., checksum changed for ... (Перекомпиляция… контрольная сумма изменилась для…)
- Рекомендуется использовать стабильный релиз компилятора, поскольку все модули неявно зависят от модуля System.
- При компиляции модуля иногда могут использоваться опции, отличающиеся от опции текущего проекта. Например:
- -M (Режим)
- -C (Проверка), такая как -Cr (проверка диапазона), -Ci (проверка ввода/вывода), -Co (проверка переполнения), -Ct (проверка стека)
- -Sa (Использовать assert в скомпилированном коде)
- -O (Оптимизация)
- -gl (Генерирует lineinfo код)
- Для некоторых старых версий компилятора, имена модулей не должны содержать заглавных букв.